当子进程终止时,我们如何保持分叉?当孩子终止时,我的程序应该休眠10秒,然后再次分叉孩子。我使用了一个do-while循环,其中wait(0(是这样的条件。
do{
if (fork() == 0)
{
...
return 0;
}
}while(wait(0));
但是,它没有等十秒钟就再次叉掉了孩子。
一旦您从子级获得状态,您的循环将立即终止。
你需要把它重写成类似的东西:
for (;;) { // Infinite loop.
// May need to change the condition depending on when
// you want to stop the program
if (fork() == 0)
{
...
return 0;
}
while(wait(0)); // may also want to check for wait's failure
sleep(10);
}