看到一個關於fork()的題目(來源於:https://mp.weixin.qq.com/s/MsGeaWNmSVOCT7kXFrQm_g),如下:
#include <stdio.h> #include <sys/types.h> #include <unistd.h> int main(void) { int i; for(i=0; i<2; i++){ fork(); printf("-"); } wait(NULL); wait(NULL); return 0; }
結果是輸出8個'-',解釋的原因是printf()緩沖區沒有立即刷新。
查詢資料后,得知緩沖區刷新方式除了緩沖區滿了和'\n'進入緩沖區以外,以下方式也會刷新:
1.程序結束時會刷新,上題就是會在程序結束時刷新。
2.調用fflush(stdout)。
3.scanf()要在緩沖區讀取數據時先刷新緩沖區(避免讀取了緩沖區內要輸出的數據)。