linux中fflush函數和printf函數 【轉】

本文轉載自:http://blog.chinaunix.net/uid-30058258-id-5029847.htmlhtml

printf是一個行緩衝函數
printf函數是標準函數,最終會調用到系統調用函數,printf函數會掉用到write系統函數;可是調用write函數須要知足一些條件件。
(1)緩衝區滿
(2)遇到\n \r
(3)調用fflush函數來沖洗緩衝區
(4)scanf讀取緩衝區的內容
(5)調用printf函數的進程或線程結束會調用fflush函數
檢測緩衝區的大小爲1024B。
fflush函數的做用:把文件流中未寫出的數據所有寫出去。函數

函數名: fflush
功 能:  清除讀寫緩衝區,須要當即把輸出緩衝區的數據進行物理寫入時
頭文件:stdio.h
原型:int fflush(FILE *stream)
其中stream是要衝洗的流
      
fflush(stdin)刷新標準輸入緩衝區,把輸入緩衝區裏的東西丟棄[非標準]
fflush(stdout)刷新標準輸出緩衝區,把輸出緩衝區裏的東西打印到標準輸出設備上
printf("。。。。。。。。。。。");後面加fflush(stdout);可提升打印效率

例子
 for(i=1;i<=10;i++)        {        printf("%d ",i);         sleep(1);                }   這個不是每秒輸出一個數字而是十秒後一次性輸出十個數字!
 在printf後加上fflush後緩衝區中的內容所有輸出。
相關文章
相關標籤/搜索