我正在編寫一個旨在固定CPU使用率的程序,我將其用作衡量性能的工具。該程序非常簡單,它從父級產生5個子進程。以下是我的代碼片段父進程不等待兒童 - C
int main(int argc, char **argv) {
pid_t pid = 0;
int i;
for(i = 0; i < 5; i++)
//create 5 additional processes
if((pid = fork()) == 0) {
//do CPU intensive task
break;
}
//fork error
if(pid == -1) {
perror("<fork failed>\n");
return EXIT_FAILURE;
}
//if parent
if(pid != 0)
//wait for children to finish
wait(NULL);
return EXIT_SUCCESS;
}
但是父進程儘管等待(NULL)函數立即退出。任何關於爲什麼會發生這種情況以及如何修復的想法都將不勝感激。
你確定孩子仍在運行?你沒有明確說明。 – Keith
等待失敗?也許將errno設置爲EFAULT? –
我確定孩子們還在跑步,我可以看到他們使用「頂」 – ThreadedLemon