0
我想找到能夠向我解釋這個的人。我有這樣的程序:C函數fork()
int main(int argc, char *argv[]){
printf("P ");
if(fork()==0)
printf("C ");
return 0;
}
這個方案的結果:P PÇ
什麼是對於第二個「P」的原因是什麼?
我想找到能夠向我解釋這個的人。我有這樣的程序:C函數fork()
int main(int argc, char *argv[]){
printf("P ");
if(fork()==0)
printf("C ");
return 0;
}
這個方案的結果:P PÇ
什麼是對於第二個「P」的原因是什麼?
IO緩衝是原因。 printf
不是立即打印文本,而是等待換行,fflush
或程序的結尾實際打印它。但是「將來打印」文本的緩衝區位於內存中,並且被fork
重複,因此兩個進程都會收到它。最後兩個都在印刷它。
所以,當我做叉,在緩衝區中保持「P」,所以當我prinf(「C」)他使他們兩個都不足? –
是的。嘗試在'P'後添加'\ n',行爲應該改變。 –