C 使用多个分叉打印语句
您忘记了每个进程在结束之前都会打印额外的时间 因此,例如,第一个进程打印“counter=0”、“counter=1”、“counter=2”,然后退出循环,在循环终止之前打印额外的“counter=2” 如果将每个C 使用多个分叉打印语句,c,fork,C,Fork,您忘记了每个进程在结束之前都会打印额外的时间 因此,例如,第一个进程打印“counter=0”、“counter=1”、“counter=2”,然后退出循环,在循环终止之前打印额外的“counter=2” 如果将每个printf更改为同时包含PID和它是哪个printf,代码将更容易理解 在循环中,计数器=1,pid=11755 在循环中,计数器=2,pid=11755 退出循环,计数器=2,pid=11755 在循环中,计数器=1,pid=11756 在循环中,计数器=2,pid=11756
printf
更改为同时包含PID和它是哪个printf
,代码将更容易理解
在循环中,计数器=1,pid=11755在循环中,计数器=2,pid=11755
退出循环,计数器=2,pid=11755
在循环中,计数器=1,pid=11756
在循环中,计数器=2,pid=11756
退出循环,计数器=2,pid=11756
在循环中,计数器=2,pid=11758
退出循环,计数器=2,pid=11758
在循环中,计数器=2,pid=11757
退出回路,计数器=2,pid=11757
我不明白的是,例如,为什么第一个fork会打印1和2,然后在循环后再打印一次2。2-in循环让我很困惑。@ssss如果忽略
fork()
调用(或注释掉并运行程序),您将看到程序打印12,因为这是您告诉它的。
int counter = 0;
int main()
{
int i;
for (i = 0; i < 2; i ++){
fork();
counter ++;
printf("counter = %d\n", counter);
}
printf("counter = %d\n", counter);
return 0;
}
____1____2__
|
_____fork |____1____2__
| __________1____2___
|fork|
| |
main__fork|____|_____________2_____
The numbers 1 and 2 represent `counter` printed by `printf`. Could anyone explain this (visually would be great) ?