嵌入式Linux C程式設計學習之路(十)——標準IO fopen/fclose
- 標準IO與檔案IO的對應函式
檔案IO: 標準IO
open fopen
close fclose
lseek fseek, rewind
read 讀寫函式比較多(分三類,全快取、行快取和無快取)
write
2. fopen函式
FILE *fopen (const char *path, const char*mode);
返回值:FILE * 檔案流指標,檔案流指標類似於檔案IO 中的檔案描述符,定義成struct_IO_FILE,在/usr/include/libio.h ,裡面包含讀寫快取的首地址、大小、位置指標等。
標準的輸入流:stdin 0
標準的輸出流:stdout 1
標準的出錯流:stderr 2
Mode:類似於檔案IO的flag
r或rb |
開啟只讀檔案,該檔案必須存在。 |
r+或r+b |
開啟可讀寫的檔案,該檔案必須存在。 |
w或wb |
開啟只寫檔案,若檔案存在則檔案長度清為0,即會擦些檔案以 前內容。若檔案不存在則建立該檔案。 |
w+或w+b或wb+ |
開啟可讀寫檔案,若檔案存在則檔案長度清為零,即會擦些檔案 以前內容。若檔案不存在則建立該檔案。 |
a或ab |
以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案, 如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容 會被保留。 |
mode整理如下:
Ø b:二進位制檔案
Ø r: 只讀方式開啟檔案,檔案必須存在;
Ø w或a:只寫方式開啟檔案,檔案不存在則建立;
區別: w等價O_TRUNC,a等價O_APPEND;
Ø +:讀寫方式開啟檔案,檔案必須存在;
例:以讀寫方式開啟一個檔案,該檔案必須存在: r+
以追加方式開啟一個檔案,若檔案不存在,則建立: a或a+
fopen建立的檔案許可權:0666 & (~umask)
3. fclose
int fclose(FILE *stream)
Ø fclose()呼叫成功返回0,失敗返回EOF,並設定errno
Ø 在該檔案被關閉之前,重新整理快取中的資料。如果標準I / O庫已經為該流自動分配了一個快取,則釋放此快取。