文件描述符與文件指針的區別

文件描述符就是open文件時產生的一個整數,直到一個索引作用,它用於UNIX系統中,用於標識文件。

文件指針是指向一個FILE的結構體,這個結構體裏有一個元素就是文件描述符。它用於ANSI C標準的IO庫調用中,用於標識文件。

既然FILE中包含文件描述符元素,可以用fopen()直接獲取指針fp,然後使用fp獲得fp中所包含文件描述符fd的信息。

文件描述符應該是唯一的,但文件指針(值)卻不是唯一的,但指向的對象卻應該是唯一的。

FILE *中除了包含了fd信息,還包含了IO緩衝,所以可以理解爲FILE是對fd的牆頭,是C標準形式,所以FILE *比fd更適合跨平臺,應該多用fopen在,少用open。

C語言文件指針與文件描述符之間可以相互轉換:

int fileno(FILE *stream);

FILE *fdopen(int fd, const char *mode);

發佈了31 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章