一个使用这样的等待函数的程序是:
#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;
}
See 等一下(2).
wait((int *)0)
calls waitpid(-1, (int *)0, 0)
。手册页指出:
如果status不为NULL,wait()和waitpid()将状态信息存储在它指向的int中。
Here, status
为空 (0)。因此,您致电wait
等待任何子进程中的状态更改,并且不返回状态。该调用仅检查特定子进程是否发生状态更改(pid
在你的情况下)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)