c c 學習 open 函式

2021-06-19 04:55:37 字數 1482 閱讀 6355

open 函式用於開啟和建立檔案。以下是 open 函式的簡單描述

#include

int open(const char *pathname, int oflag, ... /* mode_t mode */);

返回值:成功則返回檔案描述符,否則返回 -1

對於 open 函式來說,第三個引數(...)僅當建立新檔案時才使用,用於指定檔案的訪問許可權位(access permission bits)。pathname 是待開啟/建立檔案的路徑名(如 c:/cpp/a.cpp);oflag 用於指定檔案的開啟/建立模式,這個引數可由以下常量(定義於 fcntl.h)通過邏輯或構成。

o_rdonly      唯讀模式

o_wronly      只寫模式

o_rdwr        讀寫模式

開啟/建立檔案時,至少得使用上述三個常量中的乙個。以下常量是選用的:

o_creat        如果指定檔案不存在,則建立這個檔案

o_excl         如果要建立的檔案已存在,則返回 -1,並且修改 errno 的值

o_trunc        如果檔案存在,並且以只寫/讀寫方式開啟,則清空檔案全部內容

o_noctty       如果路徑名指向終端裝置,不要把這個裝置用作控制終端。

o_nonblock     如果路徑名指向 fifo/塊檔案/字元檔案,則把檔案的開啟和後繼 i/o

設定為非阻塞模式(nonblocking mode)

以下三個常量同樣是選用的,它們用於同步輸入輸出

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。

c c 學習 open 函式

open 函式用於開啟和建立檔案。以下是 open 函式 的簡單描述 include fcntl.h int open const char pathname,int oflag,mode t mode 返回值 成功則返回檔案描述符,否則返回 1 對於 open 函式來說,第三個引數 僅當建立新檔案...

python 學習 open 函式

open 函式 一般情況下,使用open 函式時只需要調入檔名引數,而不新增其它任何引數,就可以獲取檔案內容。相反,如果要向檔案中新增資訊,就必須制定乙個模式引數,用來宣告它準備做什麼,這個模式引數才是open 的靈魂。以下下 是open 函式的使用語法 open name mode bufferi...

視窗函式open

功能 開啟視窗。該函式有兩種語法格式,語法一為開啟程式設計時已知資料型別的視窗物件,語法二為開啟程式執行後才能確定資料型別的視窗物件。語法一 open windowvar 語法二 open windowvar,windowtype eg open w about,w main 語法一 ps.wind...