7

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

while(wait(NULL)>0) 

...这也让我挠头。

谁能解释上面的功能在做什么?

4

3 回答 3

22

等着(2)

所有这些系统调用都用于等待调用进程的子进程的状态变化,并获取有关其状态已更改的子进程的信息。状态变化被认为是:孩子终止;孩子被信号拦住;或者孩子被信号恢复了

因此wait()允许一个进程等待,直到它的一个子进程改变它的状态,例如存在。如果waitpid()使用进程 id 调用它,它会等待该特定子进程更改其状态,如果pid未指定 a,则它等效于调用wait()并等待任何子进程更改其状态。

wait()函数在成功时返回子 pid,因此在这样的循环中调用它时:

while(wait(NULL)>0) 

这意味着等到所有子进程退出(或更改状态)并且没有更多的子进程未等待(或直到发生错误)

于 2012-11-04T06:31:39.217 回答
2

一个快速的谷歌建议,wait(NULL)等待任何子进程完成

于 2012-11-04T06:32:00.667 回答
0

wait(NULL)这应该相当于waitpid(-1, NULL, 0)

wait(NULL)等待所有子进程完成

于 2012-11-04T06:30:45.643 回答