为什么这段代码打印两次?

可能重复:
在linux gcc中使用fork()

#include  void main () { printf ("ciao"); fork (); } 

我有一些关于C优化的想法,但我不确定。 希望你知道答案。

代码可能会打印"ciao"两次,因为标准输出是缓冲IO,因此标准输出的内部缓冲区将在子进程中复制,并且当每个进程(父进程和子进程)退出时,两个缓冲区都会刷新。

它与优化无关。

当调用fork()时,父进程和子进程都inheritance它,因此它们都将inheritance它

当他们冲洗缓冲区时打印出“ciao”。 如果你叫fflush(stdout);

在调用fork之前,它只会打印一次