fork()之前写入的内容在输出中出现两次

时间:2014-10-02 14:00:13

标签: c printf stdio fork

我写了以下C代码:

#include<stdio.h>

int main(){
    printf("A");
    if(fork() == 0){
        printf("B");
    }
    else{
        printf("C");
    }
}

我得到的输出是:

ACAB

我希望这段代码只打印一次 任何人都可以解释这个输出吗?

2 个答案:

答案 0 :(得分:3)

您的错误没有在fork之前刷新缓冲区,因此两个进程都会写入它。

fork()

之前添加此内容
fflush(0); // Flush all output-streams

答案 1 :(得分:1)

'A'存储在缓冲区中,并在退出时由两个进程刷新。