我正在阅读wait()
Unix 系统书籍中的函数。这本书包含一个程序,其中有wait(NULL)
。我不明白那是什么意思。在其他节目中有
while(wait(NULL)>0)
...这也让我挠头。
谁能解释上面的功能在做什么?
等着(2)
所有这些系统调用都用于等待调用进程的子进程的状态变化,并获取有关其状态已更改的子进程的信息。状态变化被认为是:孩子终止;孩子被信号拦住;或者孩子被信号恢复了
因此wait()
允许一个进程等待,直到它的一个子进程改变它的状态,例如存在。如果waitpid()
使用进程 id 调用它,它会等待该特定子进程更改其状态,如果pid
未指定 a,则它等效于调用wait()
并等待任何子进程更改其状态。
该wait()
函数在成功时返回子 pid,因此在这样的循环中调用它时:
while(wait(NULL)>0)
这意味着等到所有子进程退出(或更改状态)并且没有更多的子进程未等待(或直到发生错误)
一个快速的谷歌建议,wait(NULL)
等待任何子进程完成
wait(NULL)
这应该相当于waitpid(-1, NULL, 0)
wait(NULL)
等待所有子进程完成