3.2 檔案描述符
對於核心而言,所有開啟的檔案都通過檔案描述符引用。檔案描述符時乙個非負整數。當開啟乙個現有檔案或建立乙個新檔案時,核心向程序返回乙個檔案描述符。當讀、寫乙個檔案時,使用open或creat返回的檔案描述符標識該檔案,將其作為引數傳送給read或write。
按照慣例,unix系統shell把檔案描述符0與程序的標準輸入關聯,檔案描述符1與標準輸出關聯,檔案描述符2與標準錯誤關聯。這時各種shell以及很多應用程式使用的慣例,與unix核心無關。儘管如此,如果不遵循這種慣例,很多unix系統應用程式就不能正常工作。
在符合posix.1的應用程式中,幻數0、1、2雖然已被標準化,但應當把它們替換成符號常量stdin_fileno、stdout_fileno和stderr_fileno以提高可讀性。這些常量都在標頭檔案中定義。
檔案描述符的變化範圍是0~openmax-1。早期的unix系統實現採用的上限值是19(允許每個程序最多開啟20個檔案),但現在很多系統將其上限值增加至63.
第3章 檔案I O
引言unix系統中的大多數檔案i o 只需要用到5個函式 open read write lseek以及close 檔案描述符 用於描述檔案開啟或者建立之後返回的乙個非負整數,可以理解為檔案的id 特殊用途的標號 0 標準輸入 1 標準輸出 2 標準錯誤 早期系統一般乙個程序最多開啟16個檔案,現在...
第3章 檔案I O
3.3 函式open和openat 呼叫open或openat函式可以開啟或建立乙個檔案。iinclude int open const char path,int oflag,mode t mode int openat int fd,const char path,int oflag,mode ...
第3章 檔案I O
3.4 函式creat 也可呼叫create函式建立乙個新檔案。include int creat const char path,mode t mode 返回值 若成功,返回為只寫開啟的檔案描述符 若出錯,返回 1 注意,此函式等效於 open path,o wronly o creat o tr...