Linux open函式簡介

2021-08-20 06:43:01 字數 1303 閱讀 8461

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。標誌是用於指定...