我正在为一项任务开发一个项目,我们必须分叉10个子进程并让他们完成特定的任务。同时,父母需要在执行他的孩子的同时每5秒做一次特定的动作。困扰我的是我知道父母需要等待他的所有孩子在完成任务之前处理,但是当我通过for循环分配多个孩子时,父母做出的动作重复10次(因为10是我需要做的叉子数量)。这是我的代码:
for (int i = 0; i < 10; ++i) {
switch (pids[i] = fork()) {
case -1:
fprintf(stderr,"Error #%03d: %s\n", errno, strerror(errno));
exit(1);
break;
case 0:
/*
* child tasks
*/
exit(0);
break;
default:
break;
}
}
for (int k = 0; k < init_people; k++) {
waitpid(pids[k], &returnStatus, 0);
}
我想知道的是,父母是否有办法同时执行他的孩子(不是在他们完成自己的执行之前或之后)但是在周期之外这样做不是重复10次。提前感谢您的时间。