C 函数 fork()

C function fork()

我想找人给我解释一下。我有这个程序:

int main(int argc, char *argv[]){
  printf("P ");
  if(fork()==0)
     printf("C ");
  return 0;
}

这个程序的结果是:P P C

第二个 "P" 的原因是什么?

IO 缓冲是原因。 printf 不是立即打印文本,而是等待换行符、fflush 或程序结束才真正打印它。但是 "future-to-print" 文本的缓冲区在被 fork 复制的内存中,因此两个进程都接收到它。最后都打印出来了。