题
使用像这样的等待功能一个这样的程序,这是一个:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int pid,fd[2]; int n; char line[20];
if(pipe(fd)<0) {
printf("Error creating pipe");
} else {
pid=fork();
if(pid<0) {
printf("Error while forking");
} else {
if(pid>0) {
close(fd[0]);
write(fd[1],"Hello\n",6);
while(wait((int *)0)!=pid);
} else {
close(fd[1]);
n=read(fd[0],line,20);
if(n<0)
printf("Error reading a file");
write(1,line,n);
}
}
}
return 0;
}
解决方案
经验丰富的人的答案是正确的。但应当注意的是,铸造是根据标准,因为完全没有必要的,在一个指示器上下文使用0是空指针。
其他提示
请参阅人等待(2)。
wait((int *)0)
调用waitpid(-1, (int *)0, 0)
。该名男子页面状态:
如果状态不是NULL,等待()和waitpid函数()存储状态信息在INT它指向。
下面,status
是NULL(0)。因此,你要wait
呼叫等待的时间在任何一个孩子过程中的状态变化,并没有返回一个状态。呼叫只是检查是否发生了特定的子进程(在你的情况pid
)的状态变化。
不隶属于 StackOverflow