在Unix上wait()做什么?

时间:2012-11-04 06:24:42

标签: c unix ubuntu wait

我正在阅读Unix系统书籍中的wait()函数。这本书包含一个有wait(NULL)的程序。我不明白这意味着什么。在其他程序中有

while(wait(NULL)>0) 

......这也让我抓狂了。

有人能解释一下上面的功能是什么吗?

3 个答案:

答案 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)等待所有子进程完成