This question already has answers here:
Closed 5 years ago.
printf anomaly after “fork()”
(3个答案)
下面两个代码是使用gcc编译器编译和执行的
代码1:
代码2:
code1打印一次“befork”语句,而code2打印两次相同的语句。请解释一下背后的原因。
(3个答案)
下面两个代码是使用gcc编译器编译和执行的
代码1:
main()
{
printf("Before FORK\n");
fork();
printf("After FORK \n\n");
}
代码2:
main()
{
printf("Before FORK");
fork();
printf("After FORK \n\n");
}
code1打印一次“befork”语句,而code2打印两次相同的语句。请解释一下背后的原因。
最佳答案
stdout
在与终端关联时默认为行缓冲在示例2中,在第一个fflush(stdout)
之后添加printf
以刷新stdout
。