これが私の更新されたコードスニペットです
for (int i=0; i<30; i++){
printf("Forking\n");
tmpPid = fork();
switch(tmpPid)
{
case -1:
printf("Error");
break;
case 0:
printf("Fork success for proc %d\n", i);
//call some function
_exit(0)
break;
default:
printf("Fork succeed");
//store the pid in a vector
break;
}
}
//iterate through the vector and wait on each process.
// waitpid(vectorList[i], &exitStatus, WNOHANG)
ほぼ 15 ~ 18 の子プロセスの fork は正常に機能します。しかし、一部のプロセスでは、子コードがまったく実行されず、子プロセスがハングするだけです。(つまり、fork() は子 ID のみを返しますが、ゼロは返しません)。他のダミー関数を呼び出して for ループ内でより多くの時間を購入すると、この問題は見られません。誰が何が問題なのか教えてもらえますか? 複数のフォークの間に遅延を置く必要がありますか?
ありがとう