我如何等待三个子进程?

时间:2010-02-11 01:12:29

标签: unix process

我正在尝试从父级派生3个不同的子进程(并在UNIX机器上运行),我希望有这个要求:

父母必须等到所有3个子进程都已完成执行。

我正在使用wait。这是代码段:

#include <unistd.h>
#include <sys/signal.h>
#include <sys/types.h>
#include <sys/wait.h>

int main()
{
    int stat;
    /* ... */

最后,在父母中,我这样做:

    wait (&stat);
    /* ... */
    return 0;
}

问题:

我是否需要拨打wait三次或拨打一次电话是否足够? 我需要知道它是如何工作的。

3 个答案:

答案 0 :(得分:3)

你必须发出三次等待。每个wait阻止直到孩子退出或者如果孩子已经退出则不阻止。请参阅wait

答案 1 :(得分:2)

你必须等三次。

答案 2 :(得分:0)

附注:如果您不想阻止等待每个都依次终止,您可以为SIGCHLD安装一个信号处理程序,然后在您知道后再调用wait()来收集返回代码准备就绪。