【发布时间】:2014-01-24 04:20:02
【问题描述】:
我正在编写一个旨在固定 CPU 使用率的程序,我将其用作衡量性能的工具。该程序相当简单,因为它从父进程生成 5 个子进程。以下是我的代码片段
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;
}
然而,尽管有 wait(NULL) 函数,父进程还是会立即退出。任何关于为什么会发生这种情况以及如何解决它的想法将不胜感激。
【问题讨论】:
-
你确定孩子们还在跑步吗?你没有明确说明。
-
等待失败了吗?也许将 errno 设置为 EFAULT?
-
我确定孩子们还在跑步,我可以看到他们使用'top'
标签: c linux multiprocessing wait