open 函式用於開啟和建立檔案。以下是 open 函式的簡單描述
#include<fcntl.h>
int open(const char *pathname, int oflag, ... );
返回值:成功則返回檔案描述符,否則返回 -1
對於 open 函式來說,第三個引數(...)僅當建立新檔案時才使用,用於指定檔案的訪問許可權位(access permission bits)。pathname 是待開啟/建立檔案的路徑名(如 c:/cpp/a.cpp);oflag 用於指定檔案的開啟/建立模式,這個引數可由以下常量(定義於 fcntl.h)通過邏輯或構成。
o_rdonly 唯讀模式
o_wronly 只寫模式
o_rdwr 讀寫模式
開啟/建立檔案時,至少得使用上述三個常量中的乙個。以下常量是選用的:
以下三個常量同樣是選用的,它們用於同步輸入輸出
o_dsync 等待物理 i/o 結束後再 write。在不影響讀取新寫入的資料的前提下,不等待檔案屬性更新。
o_rsync read 等待所有寫入同一區域的寫操作完成後再進行
o_sync 等待物理 i/o 結束後再 write,包括更新檔案屬性的 i/o
open 返回的檔案描述符一定是最小的未被使用的描述符。
如果 name_max(檔名最大長度,不包括'\0')是 14,而我們想在當前目錄下建立檔名長度超過 14 位元組的檔案,早期的 system v 系統(如 svr2)會截斷超出部分,只保留前 14 個位元組;而由 bsd 衍生的(bsd-derived)系統會返回錯誤資訊,並且把 errno 置為 enametoolong。
posix.1引入常量_posix_no_trunc用於決定是否截斷長檔名/長路徑名。如果_posix_no_trunc 設定為禁止截斷,並且路徑名長度超過 path_max(包括 '\0'),或者組成路徑名的任意檔名長度超過 name_max,則返回錯誤資訊,並且把 errno 置為 enametoolong。
what is the difference between
fopen and open
fread and read
fwrite and write
open and creat
Linux open 函式練習
1 先用man 2 open檢視一下open函式介面 2 最簡單的open函式 3 open 乙個檔案,返回的檔案描述符從3開始增加,引數o creat表示當 abc 不存在時建立乙個,但是由於umask一開始是002,所以建立出來的許可權不是777,而是775,設定umask為000之後再執行一下...
linux open 函式使用說明
open 函式用於開啟和建立檔案。以下是open 函式的簡單描述 include int open const char pathname,int oflag,返回值 成功則返回檔案描述符,否則返回 1 對於 open 函式來說,第三個引數 僅當建立新檔案時才使用,用於指定檔案的訪問許可權位 acc...
linux open 函式各引數說明
開啟檔案 新建檔案和關閉檔案操作 開啟檔案操作使用系統呼叫函式open 該函式的作用是建立乙個檔案描述符,其他的函式可以通過檔案描述符對指定檔案進行讀取與寫入的操作。開啟檔案的一般形式是 open 檔案路徑,標誌 函式的返回值是檔案描述符,如果開啟檔案成功返回乙個正整數,否則返回 1。標誌是用於指定...