我创建了三个进程,我想同步他们的工作。具体来说,我希望第一个进程等待第二个,第二个等待第三个。基本上以创建它们的相反顺序执行它们。
这是我到目前为止所做的。
for (; i < 3 ; i++){
pids[i] = fork();
if (pids[i] == 0)
break;
}
if (pids[i] != 0){
wait(); // Main thread has to wait..
}
else{
if (i == 0){
waitpid(pids[1], &status, 0);
printProcessInfo(0);
}
else if (i == 1){
waitpid(pids[2], &status, 0);
printProcessInfo(1);
}
else if (i == 2){
printProcessInfo(2);
}
}
我正在使用 i 检查我所在的子进程,因为我假设我在子进程中得到了正确的 i,所以如果 i = 0,我实际上是第一个子进程。这个假设是真的吗?在任何情况下,我都没有得到我想要的顺序,实际上这些进程是按照它们的自然顺序执行的,绕过了我放置的 waitpid 调用。有任何想法吗?