C函数fork()

时间:2016-03-10 18:21:58

标签: c fork

我想找一个可以向我解释的人。我有这个程序:

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

该计划的结果是:P P C

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

1 个答案:

答案 0 :(得分:3)

IO缓冲是原因。 printf不会立即打印文本,而是等待换行,fflush或程序结束以实际打印它。但是"未来打印"的缓冲区文本位于由fork复制的内存中,因此两个进程都会接收它。最后两人都在打印它。