这是我更新的代码段fork调用不执行代码孩子
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子进程正常工作。但是对于某些进程,子代码根本不被执行,子进程只是挂起。 (我,E叉()只返回子ID,但不是零)。 如果我通过调用其他虚拟函数在for循环中购买更多时间,则不会看到此问题。 谁能告诉我最新的问题?是否有必要延迟多叉?
谢谢
该错误代码未显示,很可能是您在'case 0'中调用的函数(例如,如果它不调用'_exit',那可能是您的问题)。给我们一个完整的,可编译的,自包含的例子来证明问题。 –
如果'some function'中的代码返回,那么这不是一个[fork bomb](http://en.wikipedia.org/wiki/Fork_bomb)? – unwind
我忘了在这里提到_exit(0)。它在我的实际代码中。仍然有1或2个进程没有命中子代码,但父进程被执行。 –