每個程序都會預設打開3個檔案描述符,即0、1、2。其中0代表标準輸入流、1代表标準輸出流、2代表标準錯誤流。通常标準輸入流對應着鍵盤的裝置檔案、标準輸出流和錯誤流對應着顯示器的裝置檔案。在程式設計中通常使用宏STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO分别來代表0,1,2。
要注意一點:
0、1、2這三個檔案描述符對應的是标準輸入流、标準輸出流和标準錯誤流而不是鍵盤裝置檔案和顯示器裝置檔案。隻是預設标準輸入流對應着鍵盤裝置檔案,标準輸出和錯誤對應着顯示器裝置檔案。
而一些C庫提供的标準IO函數,這些函數操作的是檔案描述符,是标準輸入流、輸出流或者錯誤流,而不是鍵盤的裝置檔案和顯示器的裝置檔案。如果改變了标準輸出流和顯示器裝置檔案之間的對應關系,那麼可能結果就不會在顯示器上。這種情況出現在指令行中使用重定向符号的時候,标準輸入、标準輸出和标準錯誤對應的就不是鍵盤裝置檔案和顯示器裝置檔案,而是指定的某個普通的檔案。
------------------越是喧嚣的世界,越需要甯靜的思考------------------
合抱之木,生于毫末;九層之台,起于壘土;千裡之行,始于足下。
積土成山,風雨興焉;積水成淵,蛟龍生焉;積善成德,而神明自得,聖心備焉。故不積跬步,無以至千裡;不積小流,無以成江海。骐骥一躍,不能十步;驽馬十駕,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓無爪牙之利,筋骨之強,上食埃土,下飲黃泉,用心一也。蟹六跪而二螯,非蛇鳝之穴無可寄托者,用心躁也。