【发布时间】:2015-07-25 13:38:27
【问题描述】:
有人能帮我理解这段代码发生了什么吗?我无法理解为什么输出是这样的。输出是:
0 1 2 3 4
3
2
1
0
int main() {
int i;
for (i = 0; i < 5 && !fork(); i++) {
fflush(stdout);
printf("%d ", i);
}
wait(NULL);
printf("\n");
return 0;
}
【问题讨论】:
-
哦,你刚刚遇到了“一个'太聪明了一半'的程序员。”
fork()系统调用基本上会创建任何内容的重复副本过程正在创建它。原始进程从fork()获得一个非零(因此,“true”) 返回码。孩子得了零。对您来说不幸的是,“编写此代码的原始程序员”从未努力明确他/她的意图。 . .
标签: process fork system-calls