在我的计划,我分叉(平行)子进程在有限while循环,并在他们每个人做高管。 我想父进程继续执行(这个while循环后点),所有的孩子都结束之后。 我应该怎么办呢?
我尝试了好几种方法。 在一种方法中,我做了父母暂停后while循环和发送仅当waitpid函数返回错误ECHILD(无子剩余)SIGCHLD处理程序,但我面对这种方法的问题有些条件甚至之前父已完成分叉的所有进程,retStat变-1
void sigchld_handler(int signo) {
pid_t pid;
while((pid= waitpid(-1,NULL,WNOHANG)) > 0);
if(errno == ECHILD) {
retStat = -1;
}
}
**//parent process code**
retStat = 1;
while(some condition) {
do fork(and exec);
}
while(retStat > 0)
pause();
//This is the point where I want execution to resumed only when all children have finished