c中的fork()命令 - 这段简单代码的输出是什么?

kyo*_*ine 1 c c++ fork process

可能重复:
Unix fork()系统调用什么时候运行?

我看了维基百科,文章说,"fork()系统调用的目的是创建一个新进程,它成为调用者的子进程,之后父进程和子进程都会执行后面的代码. fork()系统调用.因此,区分父进程和子进程非常重要.这可以通过测试fork()系统调用的返回值来完成."

在这种情况下,此代码执行什么:

printf("This is a fork!");
fork();
Run Code Online (Sandbox Code Playgroud)

鉴于描述,看起来它会说"这是一个叉子!" 只有一次,因为fork()语句后没有任何东西.但是,当我在linux机箱上测试时,它打印出"这是一个叉子!" 两次.那是哪个呢?

谢谢.

ant*_*oft 8

printf的输出被缓冲; 两个子进程都得到了缓冲区的副本; 当每个子进程退出时,缓冲区被刷新两次.