對於核心而言,所有開啟的檔案都通過檔案描述符引用。檔案描述符是乙個非負整數,變化範圍是 0~open_max-1。當開啟乙個現有檔案或建立乙個新檔案時,核心向程序返回乙個檔案描述符。當讀、寫乙個檔案時,就使用 open 或 creat 返回的檔案描述符標識該檔案,將其作為引數傳送給 read 或 write函式。
按照慣例,unix 系統用 0、1 和 2 分別關聯標準輸入、標準輸出和標準錯誤。但為了提高可讀性,應當用在標頭檔案 中定義的符號常量 stdin_fileno、stdout_fileno、stderr_fileno 來代替。
通常所用的檔案操作函式是標準i/o函式,它們是帶緩衝的。所謂不帶緩衝,指的是每個read 和 write 都呼叫核心中的乙個系統呼叫。只要涉及在多個程序間共享資源,原子操作的概念就變得非常重要。我們將通過檔案 i/o 和 open 函式的引數來討論此概念。
檔案I O(不帶緩衝)之I O的效率
程式清單3 3中的程式使用read和write函式複製檔案。關於該程式應注意下列各點 它從標準輸入讀,寫至標準輸出,這就假定在執行本程式之前,這些標準輸入 輸出已由shell安排好。確實,所有常用的unix系統shell都提供一種方法,它在標準輸入上開啟乙個檔案用於讀,在標準輸出上建立 或重寫 乙個...
linux不帶緩衝檔案IO
本博文設計的io不屬於ansi c的檔案io,所涉及的每乙個函式都是乙個系統呼叫。主要涉及posix.1的不帶快取的io操作的基礎部分。在linux核心中,對於乙個檔案的描述只需要乙個標示符即可。而不是乙個複雜的指標,僅僅是乙個int型的整數,有檔案描述符可以直接通過系統api直接操作核心資源,換句...
檔案I O(不帶緩衝)概述
unix系統中大多數檔案i o只需用到5個函式 open read write lseek以及close。這些函式經常被稱為不帶緩衝的i o unbuffered i o 術語不帶緩衝指的是每個read和write都呼叫核心中的乙個系統呼叫。這些不帶緩衝的i o函式不是iso c的組成部分,但是,它...