我想找一个可以向我解释的人。我有这个程序:
int main(int argc, char *argv[]){
printf("P ");
if(fork()==0)
printf("C ");
return 0;
}
该计划的结果是:P P C
第二个" P"的原因是什么? ?
答案 0 :(得分:3)
IO缓冲是原因。 printf
不会立即打印文本,而是等待换行,fflush
或程序结束以实际打印它。但是"未来打印"的缓冲区文本位于由fork
复制的内存中,因此两个进程都会接收它。最后两人都在打印它。