2
我在循環中創建多個子進程。 每個孩子都會做這件事,任何人都可以先結束。 (不確定是否相關但是:每個孩子也有孫子)C - 等待一個孩子終止
如何等待任何子進程終止並在完成後停止其他進程?
for(i=0; i<numberOfChildren; i++)
{
pid = fork();
if(pid < 0)
{
fprintf(stderr, "Error: fork Failed\n");
return EXIT_FAILURE;
}
/* Child Process */
if(pid == 0)
{
/* Do your thing */
}
/* Parent process */
else
{
childrenPid[i]=pid;
}
}
當你的父母正在循環查看哪些子進程退出時,使用WNOHANG做一個非阻塞的waitpid(),然後查看返回值以查看一個給定的子是否退出 - 我更喜歡這個等待孩子們乾乾淨淨地離開。 – JohnH 2014-10-01 19:45:28