在認識返回值之前,先來認識兩個概念:
庫函式(libc):c標準庫當中的函式,如fopen,fclose,fread,fwrite等。
系統呼叫介面:系統提供的介面,如open,close,read,write等。
下圖是有關作業系統概念的一張圖:
從這張圖中,我們可以看出,庫函式和系統呼叫介面是上下級的關係。可以認為,lib是對系統呼叫的二次封裝,方便二次開發。
#include #include #include int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
從上面這個函式我們可以看出,函式需要乙個引數fd(open函式fd是返回值),這個fd就是檔案描述符。
linux程序預設情況下會有三個預設開啟的檔案描述符,分別是標準輸入(stdin)0,標準輸出(stdout)1,標準錯誤(stderror)2。
0,1,2對應的物理裝置一般是:鍵盤,顯示器,顯示器。
因此,我們現在對檔案描述符可以認識為它是乙個從0開始的小整數。
因為i/o相關函式與系統呼叫介面對應,並且庫函式封裝系統呼叫,所以本質上,訪問檔案還是通過fd訪問的。
所以在file這個結構體裡,必然封裝了fd。
我們在系統中找到這段原始碼檢視一下是否封裝了:
struct _io_file ;
mysql 檔案描述符 檔案描述符
toc 首先,linux的世界裡一切皆為檔案,無論是裝置還是乙個socket連線。檔案又可分為 普通檔案 目錄檔案 鏈結檔案和裝置檔案。檔案描述符 file descriptor 是核心為了高效管理已被開啟的檔案所建立的索引,其是乙個非負整數 通常是小整數 用於指代被開啟的檔案,所有執行i o操作的...
檔案描述符
檔案描述符 是個很小的正整數,它是乙個索引值,指向核心為每乙個程序所維護的該程序開啟檔案的記錄表。檔案描述符的優點 相容posix標準,許多 linux 和unix 系統呼叫都依賴於它。檔案描述符的缺點 不能移植到unix以外的系統上去,也不直觀。基於檔案描述符的輸入輸出函式 open 開啟乙個檔案...
檔案描述符
作業系統程序表中存放各個檔案進行檔案描述 核心 kernel 利用檔案描述符 file descriptor 來訪問檔案。檔案描述符是非負整數。開啟現存盤案或新建檔案時,核心會返回乙個檔案描述符。讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。目錄檔案描述符概述 如何建立檔案描述符 使用的好處 缺點...