第3章 檔案I O

2021-08-19 05:09:01 字數 585 閱讀 7661

3.14 函式fcntl

fcntl函式可以改變已經開啟檔案的屬性。

#include

int  fcntl(int fd, int cmd, ... /* int arg */);

返回值:若成功,則依賴於cmd(見下);若出錯,返回-1.        

在本節中的各例項中,第3個引數總是乙個整數,與上面所示函式原型中的注釋部分對應。但是在14.3節說明記錄鎖時,第3個引數則是指向乙個結構的指標。

fcntl函式有以下5種功能。

(1)複製乙個已有的描述符(cmd=f_dupfd或f_dupfe_cloexec)。

(2)獲取/設定檔案描述符標誌(cmd=f_getfd或f_setfd)。

(3)獲取/設定檔案狀態標誌(cmd=f_getfl或f_setfd)。

(4)獲取/設定非同步i/o所有權(cmd=f_getown或f_setown)。

(5)獲取/設定記錄鎖(cmd=f_getlk、f_setlk或f_setlkw)。

我們先說明這11種cmd中的前8種。參照圖3-7,我們將先討論與程序表項中各檔案描述符相關聯的檔案描述符標誌以及每個檔案表項中的檔案狀態標誌。

第3章 檔案I O

引言unix系統中的大多數檔案i o 只需要用到5個函式 open read write lseek以及close 檔案描述符 用於描述檔案開啟或者建立之後返回的乙個非負整數,可以理解為檔案的id 特殊用途的標號 0 標準輸入 1 標準輸出 2 標準錯誤 早期系統一般乙個程序最多開啟16個檔案,現在...

第3章 檔案I O

3.2 檔案描述符 對於核心而言,所有開啟的檔案都通過檔案描述符引用。檔案描述符時乙個非負整數。當開啟乙個現有檔案或建立乙個新檔案時,核心向程序返回乙個檔案描述符。當讀 寫乙個檔案時,使用open或creat返回的檔案描述符標識該檔案,將其作為引數傳送給read或write。按照慣例,unix系統s...

第3章 檔案I O

3.3 函式open和openat 呼叫open或openat函式可以開啟或建立乙個檔案。iinclude int open const char path,int oflag,mode t mode int openat int fd,const char path,int oflag,mode ...