-2
測試fork函數與printf的組合,我發現了一些奇怪的行爲Ç - 叉和printf行爲
例如,代碼:
int main(){
if(fork()==0){
printf("TestString");
}
}
不會打印出任何東西,而
int main(){
if(fork()==0) {
printf("TestString\n");
}
}
正確打印出TestString。爲什麼打印新行會改變行爲?我懷疑它可能會用fflush()做些什麼,但我不確定。我可以得到和解釋或鏈接,我可以讀它嗎?預先感謝您的答覆。
編輯:我正在尋找的解釋是什麼實際上是沖洗,爲什麼是\沖洗相同。
是的,你需要使用'fflush(stdout)'或者使用換行符就像你所做的那樣。 – user1336087 2014-09-25 07:52:02
printf被緩衝,當遇到換行符'\ n'時會顯示緩衝區的內容。清除意味着清除與printf相關聯的緩衝區的內容。 我測試了這段代碼,它在兩種情況下都會打印「TestString」。 – 2014-09-25 07:56:48