Linux檔案操作筆記之open函式

2021-09-10 12:56:33 字數 2171 閱讀 2625

int

open

(const

char

*pathname,

int flag)

;int

open

(const

char

*pathname,

int flag, mode_t mode)

;

需要包含的標頭檔案sys/types.h、sys/stat.h、fcntl.h。

open()函式開啟pathname指定的檔案,當函式成功時,返回乙個整型的檔案描述符。這個函式正常情況下會返回乙個檔案描述符的值,在出錯的時候會返回-1.

開啟檔案的時候需要指定開啟的檔案路徑,這個引數由filename指定。pathname所指的為乙個字串變數,這個變數的長度在不同的系統其最大長度有區別,通常情況下為1024個位元組。當所給的路徑長度大於這個數值的時候,系統會對字串進行截斷,僅選擇最前面的位元組進行操作。

用於設定檔案開啟後允許的操作方式,可以為唯讀、只寫或讀寫。分別用o_rdonly(唯讀)、o_wronly(只寫)和o_rdwr(讀寫)表示。在開啟檔案的時候必須指定上述的三種模式之一。三個引數中o_rdonly通常定義為0,o_wronly通常定義為1,o_rdwr定義為2.

引數flag除了上述三個選項之外,還有一些可選的引數。

o_creat選項:如果檔案不存在則建立它,當使用此選項時,第三個引數mode需要同時設定,用來說明新檔案的許可權。

o_excl:檢視檔案是否存在。如果同時指定了o_creat,而檔案已經存在,會返回錯誤。用這種方法可以安全開啟乙個檔案。

o_trunc:將檔案長度截斷為0.如果此檔案存在,並且檔案成功開啟,則會將其長度截斷為0。例如:

open

(pathname,o_rdwr|o_creat|o_trunc,mode)

;

通常使用o_trunc選項對需要清空的檔案進行歸零操作。o_nonblock開啟檔案為非阻塞方式,如果不指定此項,預設的開啟方式為阻塞方式,即對檔案的讀寫操作需要等待操作的返回狀態。

其中,引數mode用於表示開啟檔案的許可權,mode的使用必須結合flag的o_creat使用,否則是無效的。它們的值在以下列出。選項值

含義s_irwxu

00700

使用者(檔案所有者)有讀寫和執行的許可權

s_irusr

00400

使用者對檔案有讀許可權

s_iwusr

00200

使用者對檔案有寫許可權

s_ixusr

00100

使用者對檔案有執行許可權

s_irwxg

00070

組使用者(檔案所有者)有讀寫和執行的許可權

s_irgrp

00040

組使用者對檔案有讀許可權

s_iwgrp

00020

組使用者對檔案有寫許可權

s_ixgrp

00010

組使用者對檔案有執行許可權

s_irwxo

00007

其他使用者(檔案所有者)有讀寫和執行的許可權

s_iroth

00004

其他使用者對檔案有讀許可權

s_iwoth

00002

其他使用者對檔案有寫許可權

s_ixoth

00001

其他使用者對檔案有執行許可權

/*open-01.c開啟檔案的例子*/

#include

#include

#include

#include

intmain

(void

)else

return0;

}

0、1、2檔案描述符分配給了系統,表示標準輸入(描述符0)、標準輸出(描述符1)和標準錯誤(描述符2)。

o_creat可以建立檔案,與o_excl結合使用可以編寫容錯的程式,例如:

/*檔案open-03.c,o_creat和o_excl的使用*/

#include

#include

#include

#include

intmain

(void

)else

return0;

}

Linux 檔案操作筆記

一 講解open write read lseek close函式的使用 方法 先講解每個函式的用法,然後編寫 以具體的例子進行 檔名稱 open.c 思路 1 呼叫open函式新建乙個檔案 2 呼叫write函式寫檔案 3 呼叫lseek函式移動檔案指標到檔案頭部 4 呼叫read函式讀取檔案內容...

Linux 操作筆記

為了熟練使用,抽空學習了下linux系統,做了些筆記 bin bin 是 binary 的縮寫。這個目錄存放著最經常使用的命令。boot 這裡存放的是啟動 linux 時使用的一些核心檔案,包括一些連線檔案以及映象檔案。dev dev 是 device 裝置 的縮寫。該目錄下存放的是 linux 的...

linux操作筆記

linux檢視操作歷史 ps ef 檢視gpu狀態 watch nvidia smi linux檢視後台任務狀態 ps aux linux一次性殺掉多個程序 ps ef grep python grep v grep cut c 9 15 xargs kill 9其中第二個分命令表示所有含pytho...