我正在阅读Unix系统书籍中的wait()
函数。这本书包含一个有wait(NULL)
的程序。我不明白这意味着什么。在其他程序中有
while(wait(NULL)>0)
......这也让我抓狂了。
有人能解释一下上面的功能是什么吗?
答案 0 :(得分:21)
man wait(2)
所有这些系统调用都用于等待状态更改 呼叫过程的孩子,并获得有关孩子的信息 其状态发生了变化。国家变更被认为是:儿童被终止;孩子被一个信号拦住了;或者通过信号恢复孩子
所以wait()
允许进程等到其子进程之一改变其状态,例如存在。如果使用进程ID调用waitpid()
,则等待特定的子进程更改其状态,如果未指定pid
,则它等同于调用{{1}它等待任何子进程改变其状态。
wait()
函数在成功时返回子pid,所以当它在这样的循环中被调用时:
wait()
这意味着要等到所有子进程退出(或更改状态)并且不再有等待的子进程(或直到发生错误)
答案 1 :(得分:2)
快速谷歌建议,wait(NULL)
等待任何子进程完成
答案 2 :(得分:0)
wait(NULL)
,应该等同于waitpid(-1, NULL, 0)
wait(NULL)
等待所有子进程完成