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

gc5*_*gc5 6 c printf fork newline stdio

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

#include <stdio.h>

void main ()
{
  printf ("ciao");
  fork ();
}
Run Code Online (Sandbox Code Playgroud)

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

hmj*_*mjd 14

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

它与优化无关.