【发布时间】:2020-05-07 13:45:01
【问题描述】:
#include <stdio.h>
#include <sys/type.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
int main(void)
{
pid_t pid;
int i;
for(i=0; i<3; i++) {
pid = fork();
if(pid == -1) {
printf("Fork Error.\n");
} else if(pid == 0) {
printf("I am child");
}
}
if(pid != 0) {
while((pid = waitpid(-1, NULL, 0)) > 0)
if(errno == ECHILD)
break;
printf("I am parent and all children have exited.\n");
}
exit(0);
return 0;
}
结果是,
“我是孩子”被打印了 7 次, “我是父母,所有孩子都离开了。”打印了 4 次
而且打印顺序不固定。
我想出了一些我一直在努力解决的问题, 但有些不是。 所以,就是这样。
为什么“我是父母,所有孩子都已退出”。打印了 4 次?
你能详细解释一下吗?
PS。我知道 sys/wait.h 需要插入到代码之上, 但我的老板不希望我这样做。
【问题讨论】:
-
我以前见过它,但它并没有真正帮助我。如果你能回答我的问题,你能详细解释一下吗?
-
这能回答你的问题吗? fork() in a For Loop