Вызов функции после завершения дочернего процесса - PullRequest
0 голосов
/ 28 апреля 2011

В моей программе на c ++ несколько дочерних процессов запускаются с использованием fork и execv. Я не жду их, поэтому они бегут в фоновом режиме. Когда они закончат работать, я хочу запустить определенную функцию. Как это можно сделать?

Ответы [ 2 ]

2 голосов
/ 28 апреля 2011

Прослушайте сигнал SIGCHLD и вызовите свою функцию в обработчике.Будьте осторожны с тем, что вы вызываете в обработчике, вы должны вызывать только async-signal-safe функции.

0 голосов
/ 28 апреля 2011

Я предполагаю, что вы do хотите дождаться завершения процессов, но вы хотите запускать процессы параллельно, а не последовательно. Если это так, запускайте каждый процесс, как сейчас, а затем используйте системный вызов waitpid() для каждого дочернего pid. После завершения каждого процесса будет возвращен каждый waitpid.

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