这是我更新的代码片段
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() 仅返回子 ID,但不返回零)。如果我通过调用其他一些虚拟函数在 for 循环中购买更多时间,那么这个问题就不会出现。谁能告诉我什么问题?是否有必要在多个分叉之间设置延迟?
谢谢