gcc编译器中fork()的歧义

gcc编译器中fork()的歧义,c,gcc,fork,C,Gcc,Fork,以下两个代码是使用gcc编译器编译和执行的 代码1: 代码2: main() { printf("Before FORK"); fork(); printf("After FORK \n\n"); } code1打印“Before FORK”语句一次,而code2打印相同的语句两次。请解释原因。stdout与终端关联时默认为行缓冲。在示例2中,在第一个printf之后添加fflush(stdout),以刷新stdout,stdout与终端关

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

代码2:

    main()
    {
     printf("Before FORK");
     fork();
     printf("After FORK \n\n");
    }

code1打印“Before FORK”语句一次,而code2打印相同的语句两次。请解释原因。

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

是的,这是一个重复的问题,但我并不认为您有意发布重复的问题!但是这个问题经常被问到和回答,我所做的就是在谷歌上搜索“printffork”:-)在我看来,最好的答案是大卫·施瓦茨(David Schwartzyes)给出的givven。这是一个重复的问题,但我并不认为你故意发布了一个重复的问题!但这个问题经常被问到和回答,我所做的只是在谷歌上搜索“printf fork”:-)在我看来,最好的答案是David Schwartz的givven
    main()
    {
     printf("Before FORK");
     fork();
     printf("After FORK \n\n");
    }