在C.等待()我应该传递给它什么args

use*_*983 1 c linux operating-system

我应该将什么参数传递给wait(),以便它等待所有子进程在继续之前终止

bdo*_*lan 5

wait只等待一个孩子.你应该叫wait(NULL)一个循环,直到它返回-1errno == ECHILD:

while (wait(NULL) != -1 || errno != ECHILD) { }
Run Code Online (Sandbox Code Playgroud)

wait(2)手册页:

ECHILD (for wait())
Run Code Online (Sandbox Code Playgroud)

呼叫过程没有任何未经等待的孩子.

EINTR
Run Code Online (Sandbox Code Playgroud)

WNOHANG没有设置,并且发现了一个未阻止的信号或SIGCHLD; 见信号(7).

因此,您必须检查ECHILD,以免被捕获的信号所迷惑.