linux open 函式各引數說明

2021-08-18 17:44:43 字數 2680 閱讀 3693

開啟檔案、新建檔案和關閉檔案操作

開啟檔案操作使用系統呼叫函式open(),該函式的作用是建立乙個檔案描述符,其他的函式可以通過檔案描述符對指定檔案進行讀取與寫入的操作。開啟檔案的一般形式是:

open(檔案路徑, 標誌); 

函式的返回值是檔案描述符,如果開啟檔案成功返回乙個正整數,否則返回-1。標誌是用於指定開啟檔案操作模式的列舉常量,主標誌如表13.1所示。

表13.1  開啟檔案操作的主標誌

參    數

說    明

參    數

說    明

o_rdonly

以唯讀方式開啟檔案

o_rdwr

以可讀寫方式開啟檔案

o_wronly

以只寫方式開啟檔案

主標誌是互斥的,使用其中一種則不能再使用另外一種。除了主標誌以外,還有副標誌可與它們配合使用,副標誌可同時使用多個,使用時在主標誌和副標誌之間加入按位與(|)運算子,如表13.2所示。

表13.2  開啟檔案操作的副標誌

參    數

說    明

讀寫檔案從檔案尾部開始移動,所寫入

的資料追加到檔案尾

o_trunc

若檔案存在並且以可寫的方式開啟時,

此標誌會將檔案長度清為0,而原來存於

該檔案的資料也會消失

o_creat

若路徑中的檔案不存在則自動建立該檔案

o_excl

如果與o_creat同時設定,此指令會去檢

查檔案是否存在,檔案若不存在則建立該文

件,否則將導致開啟檔案錯誤。此外,若

o_creat與o_excl同時設定,並且將要

開啟的檔案為符號連線,則將導致開啟檔案失敗

新建檔案操作是在開啟檔案操作的函式上加入o_creat副標誌實現的。當路徑中的檔案不存在時,則建立乙個新檔案。建立新檔案的同時可設定檔案的許可權,這時函式需要增加一組實際引數,形式為:

open(檔案路徑, 標誌, 許可權標誌); 

檔案許可權標誌如表13.3所示。

表13.3  檔案許可權標誌

參    數

說    明

參    數

說    明

s_irusr

所有者擁有

讀許可權s_ixgrp

群組擁有執

行許可權s_iwusr

所有者擁有

寫許可權s_iroth

其他使用者擁

有讀許可權

s_ixusr

所有者擁有

執行許可權

s_iwoth

其他使用者擁

有寫許可權

s_irgrp

群組擁有讀許可權

s_ixoth

其他使用者擁

有執行許可權

s_iwgrp

群組擁有寫許可權

檔案許可權標誌也可以使用加權數字表示,這組數字被稱為umask變數,它的型別是mode_t,是乙個無符號八進位制數。umask變數的定義方法如表13.4所示。umask變數由3位數字組成,數字的每一位代表一類許可權。使用者所獲得的許可權是加權數值的總和。例如764表示所有者擁有讀、寫和執行許可權,群組擁有讀和寫許可權,其他使用者擁有讀許可權。

表13.4  umask變數表示方法

加 權 數 值

第1位第2位

第3位4

所有者擁有

讀許可權群組擁有讀許可權

其他使用者擁

有讀許可權

2所有者擁有

寫許可權群組擁有寫許可權

其他使用者擁

有寫許可權

1所有者擁有

執行許可權

群組擁有執行許可權

其他使用者擁

有執行許可權

新建檔案的另乙個函式是creat(),該函式的一般形式是:

creat(路徑, umask); 

當檔案被成功建立函式的返回值為0,否則為-1。當檔案不需要使用了,則可以使用close()函式關閉檔案。關閉檔案的一般形式為:close(檔案描述符),如果關閉檔案成功,close()函式的返回0,否則返回-1。

下例將演示開啟檔案、新建檔案和關閉檔案這3種操作。程式的邏輯為:指定乙個路徑,如果該檔案存在,輸出提示資訊,關閉該檔案;如果該檔案不存在,則新建檔案並設定檔案屬性,輸出提示資訊,然後關閉該檔案。完整的**如下:

#include // 提供open()函式  

#include // 提供mode_t型別  

#include // 提供open()函式的符號  

#include // 提供close()函式  

#include 

int main()  

}  else  

puts("檔案開啟成功");  

close(f);                                            // 關閉檔案  

return 0;  

} 該程式首先判斷是否存在檔案test,判斷的方法是用open()函式開啟test檔案,如果返回值是-1,則表示該檔案不存在(有時候並非如此)。當檔案不存在時,使用open()函式建立該檔案,並在程式最後關閉。為mode_t型變數f_attrib賦值的方法使用了按位計算操作,將表示檔案許可權的常量進行按位或計算,計算的結果與八進位制數0664相同,如圖13.3所示。

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 fcntl.h int open const char pathname,int oflag,返回值 成功則返回檔案描述符,否則返回 1 對於 open 函式來說,第三個引數 僅當建立新檔案時才使用,用於指定檔案的訪...

main函式引數說明

main函式引數說明 字元指標陣列 include void fun int a 10 void fun int a void fun int a void print array char p 100 int n void print array char p,int n void print a...