文件描述符就是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);