我写了下面的C代码:

#include<stdio.h>

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

我得到的结果是:
ACAB

我希望这段代码只打印一次。
有人能解释一下这个结果吗?

最佳答案

您的错误不是在fork-ing之前刷新缓冲区,因此两个进程都将写入它。
fork()之前添加:

fflush(0); // Flush all output-streams

关于c - 在fork()之前写入的内容在输出中出现两次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26162492/

10-11 23:10
查看更多