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

se7*_*7en 1 c gcc fork

使用gcc编译器code1编译和执行以下两个代码:

    main()
    {
     printf("Before FORK\n");
     fork();
     printf("After FORK \n\n");
    }
Run Code Online (Sandbox Code Playgroud)

代码2:

    main()
    {
     printf("Before FORK");
     fork();
     printf("After FORK \n\n");
    }
Run Code Online (Sandbox Code Playgroud)

code1打印一次"Before FORK"语句,但code2打印两次.请解释背后的原因.

oua*_*uah 5

stdout默认情况下,当与终端关联时,它是行缓冲的.在示例2中,fflush(stdout)在第一次printf刷新之后添加stdout.