關於緩衝和重定向的問題

2021-09-29 17:44:39 字數 415 閱讀 2845

先觀察以下程式: 

/*

將標準輸入的資料複製到標準輸出

*/#include int main(void)

以上程式並不是每讀入乙個字元後就馬上輸出,而是在按下回車鍵後一併輸出.

c語言的輸入輸出一般會將讀入的字元以及帶輸出的字元暫時儲存在快取中, 當達到下列條件時才進行實際的輸入輸出操作.

當然,也有下面這樣的環境

這些方式分別稱為全緩衝、目行緩衝、無緩衝.

如下所示,給定輸入和輸出檔名(假設執行檔案的名稱為list0808)並執行.

list0808  《輸入檔名》  輸出檔名

「輸入檔案」的資料就會複製到「輸出檔案」中去. 但這不是由c語言實現的,而是通過unix和ms-dos等作業系統的重定向功能來實現.

關於重定向的問題

1.標準輸入的控制 語法 命令 檔案將檔案做為命令的輸入。例如 mail s mail test wesongzhou hotmail.com file1 將檔案file1 當做信件的內容,主 題名稱為mail test,送給收信人。2.標準輸出的控制 語法 命令 檔案將命令的執行結果送至指定的檔案...

重定向到檔案時的緩衝問題

在定位乙個問題的時候發現 用命令列重定向程式的輸出log到乙個檔案 的時候,檔案裡沒有任何列印。之前在定位同乙個程式的 非預期退出 問題時明明有列印的。調查後發現這是檔案緩衝帶來的影響。這種問題在以前的才坑歷程中遇到過,只是忘記了,現在再次回想起來,於是就記錄一下。標準輸出是有緩衝的 標準錯誤沒有 ...

關於重定向

標準輸入的控制 語法 命令檔案將命令的執行結果送至指定的檔案中。例如 ls l list 將執行 ls l 命令的結果寫入檔案list 中。語法 命令 檔案將命令的執行結果送至指定的檔案中,若檔案已經存在,則覆蓋。例如 ls lg list 將執行 ls lg 命令的結果覆蓋寫入檔案list 中。語...