我写了以下C代码:
#include<stdio.h>
int main(){
printf("A");
if(fork() == 0){
printf("B");
}
else{
printf("C");
}
}
我得到的输出是:
ACAB
我希望这段代码只打印一次 任何人都可以解释这个输出吗?
答案 0 :(得分:3)
您的错误没有在fork
之前刷新缓冲区,因此两个进程都会写入它。
在fork()
:
fflush(0); // Flush all output-streams
答案 1 :(得分:1)
'A'存储在缓冲区中,并在退出时由两个进程刷新。