1. fopen
- 開啟普通檔案
- 帶緩衝區撒點粉撒點粉阿桑地方
- 緩衝檔案系統是藉助檔案結構體指標來對檔案進行管理,通過檔案指標來對檔案進行訪問,既可以讀寫字元、字串、格式化資料,也可以讀寫二進位制資料
函式原型:FILE * fopen(const char * path,const char * mode);
所需庫:<stdio.h>
引數說明:
mode有下列幾種形態字串:
r+ 以可讀寫方式開啟檔案,該檔案必須存在。
rw+ 讀寫開啟一個文字檔案,允許讀和寫。
wb 只寫開啟或新建一個二進位制檔案;只允許寫資料。
wb+ 讀寫開啟或建立一個二進位制檔案,允許讀和寫。
ab+ 讀寫開啟一個二進位制檔案,允許讀或在檔案末追加資料。
at+ 開啟一個叫string的檔案,a表示append,就是說寫入處理的時候是接著原來檔案已有內容寫入,不是從頭寫入覆蓋掉,t表示開啟檔案的型別是文字檔案,+號表示對檔案既可以讀也可以寫。
2. open
- 開啟裝置檔案
- 不帶緩衝區
- 非緩衝檔案系統依賴於作業系統,通過作業系統的功能對檔案進行讀寫,是系統級的輸入輸出,它不設檔案結構體指標,只能讀寫二進位制檔案,但效率高、速度 快
函式原型:int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
所需庫:<fcntl.h>
返回值:成功則返回檔案描述符,否則返回 -1;
引數說明:
對於open函式來說,第三個引數僅當建立新檔案時(即 使用了O_CREAT 時)才使用,用於指定檔案的訪問許可權位(access permission bits)。pathname 是待開啟/建立檔案的POSIX路徑名(如/home/user/a.cpp);flags 用於指定檔案的開啟/建立模式,這個引數可由以下常量(定義於fcntl.h)通過邏輯位或邏輯構成。
O_RDONLY 只讀模式
O_WRONLY 只寫模式
O_RDWR 讀寫模式
開啟/建立檔案時,至少得使用上述三個常量中的一個。以下常量是選用的:
O_APPEND 每次寫操作都寫入檔案的末尾
O_CREAT 如果指定檔案不存在,則建立這個檔案
O_EXCL 如果要建立的檔案已存在,則返回 -1,並且修改 errno 的值
O_TRUNC 如果檔案存在,並且以只寫/讀寫方式開啟,則清空檔案全部內容(即將其長度截短為0)
O_NOCTTY 如果路徑名指向終端裝置,不要把這個裝置用作控制終端。
O_NONBLOCK 如果路徑名指向 FIFO/塊檔案/字元檔案,則把檔案的開啟和後繼 I/O
設定為非阻塞模式
- (nonblocking mode)
以下三個常量同樣是選用的,它們用於同步輸入輸出
- O_DSYNC 等待物理 I/O 結束後再 write。在不影響讀取新寫入的資料的前提下,不等待檔案屬性更新。
O_RSYNCread等待所有寫入同一區域的寫操作完成後再進行
O_SYNC 等待物理 I/O 結束後再write,包括更新檔案屬性的 I/O
3.popen
- 開啟管道
函式原型:FILE * popen ( const char * command , const char * type );
所需庫:<stdio.h>
返回值:如果呼叫 fork() 或 pipe() 失敗,或者不能分配記憶體將返回NULL,否則返回標準 I/O 流。
引數說明:type 引數只能是讀或者寫中的一種,得到的返回值(標準 I/O 流)也具有和 type 相應的只讀或只寫型別。如果 type 是 "r" 則檔案指標連線到 command 的標準輸出;如果 type 是 "w" 則檔案指標連線到 command 的標準輸入。
command 引數是一個指向以 NULL 結束的 shell 命令字串的指標。這行命令將被傳到 bin/sh 並使用-c 標誌,shell 將執行這個命令。