使用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打印“Before FORK”语句一次,但code2打印两次。请解释背后的原因。
答案 0 :(得分:5)
stdout
在与终端关联时进行行缓冲。在示例2中,在第一个fflush(stdout)
之后添加printf
以刷新stdout
。