Как мне ждать трех дочерних процессов? - PullRequest
3 голосов
/ 11 февраля 2010

Я пытаюсь разветвить 3 разных дочерних процесса от родительского (и запускаю это в UNIX-боксе), и я хочу получить следующее требование:

Родитель должен дождаться завершения всех трех дочерних процессов.

Я использую 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 ]

3 голосов
/ 11 февраля 2010

Вы должны оформить три ожидания. Каждый wait блокируется, пока ребенок не выходит или не блокируется, если ребенок уже вышел. Смотрите подождите .

2 голосов
/ 11 февраля 2010

Вы должны ждать три раза.

0 голосов
/ 08 июля 2011

Примечание: если вы не хотите блокировать ожидание завершения каждого из них по очереди, вы можете вместо этого установить обработчик сигнала для SIGCHLD и затем вызвать wait (), чтобы собрать код возврата, как только вы знаю, что готов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...