为什么fork()和printf()输出比我预测的更多?

zar*_*dav 2 c linux printf fork

这是我的小程序:

#include <unistd.h>
#include <stdio.h>
int main() {
  printf("1");
  fork();
  printf("2");
  fork();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这段代码的输出是12121212,我问:
为什么打印超过122

小智 7

因为printf是缓冲的,只有在程序退出时才会打印文本.每次打印后尝试刷新标准输出.