fcntl

off_t l_type l_when

表頭檔案

#include <fcntl.h>

函式類型

定義函式 int fcntl(int fd , int cmd,...);
函式是變參函式,根據cmd來判斷第三個參數,參見printf的運用

參數介紹

1. 參數fd

參數fd代表欲設定的檔案描述詞

2. 參數cmd

參數cmd代表打算操作的指令。
有以下幾種情況:
F_DUPFD用來查找大於或等於參數arg的最小且仍未使用的檔案描述詞,並且複製參數fd的檔案描述詞。執行成功則返回新複製的檔案描述詞。新描述符與fd共享同一檔案表項,但是新描述符有它自己的一套檔案描述符標誌,其中FD_CLOEXEC檔案描述符標誌被清除。請參考dup2()。
F_GETFD取得close-on-exec旗標。若此旗標的FD_CLOEXEC位為0,代表在調用exec()相關函式時檔案將不會關閉。
F_SETFD 設定close-on-exec 旗標。該旗標以參數arg 的FD_CLOEXEC位決定。
F_GETFL 取得檔案描述詞狀態旗標,此旗標為open()的參數flags。
F_SETFL 設定檔案描述詞狀態旗標,參數arg為新旗標,但只允許O_APPEND、O_NONBLOCK和O_ASYNC位的改變,其他位的改變將不受影響。
F_GETLK 取得檔案鎖定的狀態。
F_SETLK 設定檔案鎖定的狀態。此時flcok 結構的l_type 值必須是F_RDLCK、F_WRLCK或F_UNLCK。如果無法建立鎖定,則返回-1,錯誤代碼為EACCES 或EAGAIN。
F_SETLKW F_SETLK 作用相同,但是無法建立鎖定時,此調用會一直等到鎖定動作成功為止。若在等待鎖定的過程中被信號中斷時,會立即返回-1,錯誤代碼為EINTR

3. 參數lock指針

參數lock指針為flock 結構指針,定義如下
struct flcok
{
short int l_type;
short int l_whence;
off_t l_start;
off_t l_len;
pid_t l_pid;
};
l_type 有三種狀態:
F_RDLCK 建立一個供讀取用的鎖定
F_WRLCK 建立一個供寫入用的鎖定
F_UNLCK 刪除之前建立的鎖定
l_whence 也有三種方式:
SEEK_SET 以檔案開頭為鎖定的起始位置。
SEEK_CUR 以目前檔案讀寫位置為鎖定的起始位置
SEEK_END 以檔案結尾為鎖定的起始位置。
返回值 成功則返回0,若有錯誤則返回-1,錯誤原因存於errno.

功能介紹

fcntl()用來操作檔案描述符的一些特性。fcntl 不僅可以施加建議性鎖,還可以施加強制鎖。同時,fcntl還能對檔案的某一記錄進行上鎖,也就是記錄鎖。

熱門詞條

聯絡我們