关于gcc编译器中fork()的歧义

时间:2014-04-11 07:53:45

标签: c gcc fork

使用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打印两次。请解释背后的原因。

1 个答案:

答案 0 :(得分:5)

默认情况下,

stdout在与终端关联时进行行缓冲。在示例2中,在第一个fflush(stdout)之后添加printf以刷新stdout