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

时间:2011-02-05 09:47:24

标签: c linux operating-system

我应该将什么参数传递给wait(),以便在继续

之前等待所有子进程终止

1 个答案:

答案 0 :(得分:5)

wait只等待一个孩子。您应该在循环中调用wait(NULL),直到它-1返回errno == ECHILD

while (wait(NULL) != -1 || errno != ECHILD) { }

来自wait(2) manual page:

ECHILD (for wait())
     

呼唤   过程没有任何不受欢迎的   孩子。

EINTR
      WNOHANG没有定下来   未阻止信号或SIGCHLD   抓住;见信号(7)。

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