fd是一個非負整數,一個索引值,指向內核為每一個進程所維護的該進程打開文件的記錄表。
程序打開一個現有文件或者創建一個新文件,內核向該進程返回一個文件描述符。
每個Unix進程都有三個標准的POSIX文件描述符,對應三個標准流:
(ref:https://zh.wikipedia.org/wiki/%E6%96%87%E4%BB%B6%E6%8F%8F%E8%BF%B0%E7%AC%A6)
整數值 | 名稱 | <unistd.h>符號常量[1] | <stdio.h>文件流[2] |
---|---|---|---|
0 | Standard input | STDIN_FILENO | stdin |
1 | Standard output | STDOUT_FILENO | stdout |
2 | Standard error | STDERR_FILENO | stderr |
標准輸入:是輸入到程序的數據(通常是文件)。程序要求以讀(read)操作來傳輸數據。
C++ <iostream>變量為std::cin
並非所有的程序都要求輸入,比如ls
除非重定向,否則輸入是預期由鍵盤獲取的。
標准輸出:C++ <iostream>變量為std::cout
除非重定向,否則輸出到終端(屏幕)
並非所有程序都要求輸出,如mv
標准錯誤:C++ <iostream>變量為std::cerr 和 std::clog
默認輸出到終端(屏幕)