私のプログラムは、子プロセスの数を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--;
}
}
}
私は一日中この問題を探していました。誰かが助けることができますか?