# stdout buffer 機制 **處理情境:在遇到需將stdout重導到別的檔案實需考慮下面三種緩衝的機制。** 有三種機制: 1. unbuffered stream 將任何讀取或寫到buffer的資料馬上讀寫到指定的檔案。 2. buffered stream 在buffered stream遇到newline的時候寫到指定的檔案。 3. fully buffered stream 將任何讀取或寫到buffer的資料在**緩衝到一定的資料大小(可設定)**後讀寫到指定的檔案。 **使用時機:** 1. 使用指令方式可以用stdbuf方式,**unbuffered stream**則用以下方式 ```bash= stdbuf -o0 program ``` 2. 如果是在程式當中可以用**fflush**或是**setvbuf**調整程式的IO buffering的模式。 **參考資料:** [12.20.1 Buffering Concepts](https://www.gnu.org/software/libc/manual/html_node/Buffering-Concepts.html) [12.20.3 Controlling Which Kind of Buffering ](https://www.gnu.org/software/libc/manual/html_node/Controlling-Buffering.html) [setvbuf() - C語言庫函數](http://tw.gitbook.net/c_standard_library/c_function_setvbuf.html) ###### tags: `linux`