使用这样的等待函数的一个这样的程序是这样的:
#include#include 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; }
strager.. 11
见男人等(2).
wait((int *)0)
电话waitpid(-1, (int *)0, 0)
.手册页指出:
如果status不是NULL,则wait()和waitpid()将状态信息存储在它指向的int中.
这里status
是NULL(0).因此,您的调用wait
等待任何子进程中的状态更改,并且不返回状态.该调用仅检查特定子进程(pid
在您的情况下)是否发生状态更改.
见男人等(2).
wait((int *)0)
电话waitpid(-1, (int *)0, 0)
.手册页指出:
如果status不是NULL,则wait()和waitpid()将状态信息存储在它指向的int中.
这里status
是NULL(0).因此,您的调用wait
等待任何子进程中的状态更改,并且不返回状态.该调用仅检查特定子进程(pid
在您的情况下)是否发生状态更改.