我的程序应该将子进程的数量限制为 3。
使用下面的代码,waitpid
我的父进程停止,因此我无法在第一个子进程之后创建更多子进程。如果我不使用waitpid
,那么我不知道子进程何时退出以减少活动进程的数量。
int numProcs = 0;
while(1==1) {
/*
* inserts code that waits for incoming input
*/
numProcs++;
pid = fork();
if (pid == 0) {
doStuff(); // may exit anytime, based on user input
} else {
if (numProcs > 3) {
wait(&status);
numProcs--;
} else {
waitpid(pid, &status, 0); // PROBLEM!
numProcs--;
}
}
}
我整天都在寻找这个问题。有人可以帮忙吗?