在Unix上wait()做什么?

Nar*_*uto 7 c unix ubuntu wait

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

while(wait(NULL)>0) 
Run Code Online (Sandbox Code Playgroud)

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

任何人都能解释一下上面的功能是做什么的吗?

iab*_*der 21

男子等(2)

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

因此,wait()允许进程等待其子进程之一更改其状态,例如存在.如果waitpid()使用进程ID调用它,则等待该特定子进程更改其状态,如果pid未指定,则它等同于调用wait(),并等待任何子进程更改其状态.

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

while(wait(NULL)>0) 
Run Code Online (Sandbox Code Playgroud)

这意味着要等到所有子进程退出(或更改状态)并且不再需要等待子进程(或直到发生错误)