一、函式簡介
1、標頭檔案
#include
#include
#include
2、函式型別
int fcntl(int fd, int cmd);
int fcntl(int fd, int cmd, long arg);
int fcntl(int fd, int cmd, struct flock *lock);
fcntl()針對描述符提供控制。引數fd是被引數cmd操作的描述符。針對cmd的值,fcntl能夠接受第三個引數int arg
3、引數介紹
引數fd代表欲設定的檔案描述符。
引數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_getlk 取得檔案鎖定的狀態。
f_setlk 設定檔案鎖定的狀態。此時flcok 結構的l_type 值必須是f_rdlck、f_wrlck或f_unlck。如果無法建立鎖定,則返回-1,錯誤**為eacces 或eagain。
f_setlkw f_setlk 作用相同,但是無法建立鎖定時,此呼叫會一直等到鎖定動作成功為止。若在等待鎖定的過程中被訊號中斷時,會立即返回-1,錯誤**為eintr。
引數lock指標為flock 結構指標,定義如下
struct flock ;
l_type 有三種狀態:
f_rdlck 建立乙個供讀取用的鎖定
f_wrlck 建立乙個供寫入用的鎖定
f_unlck 刪除之前建立的鎖定
l_whence 也有三種方式:
seek_set 以檔案開頭為鎖定的起始位置。
seek_cur 以目前檔案讀寫位置為鎖定的起始位置
seek_end 以檔案結尾為鎖定的起始位置。
l_start 表示相對l_whence位置的偏移量,兩者一起確定鎖定區域的開始位置。
l_len表示鎖定區域的長度,若果為0表示從起點(由l_whence和 l_start決定的開始位置)開始直到最大可能偏移量為止。即不管在後面增加多少資料都在鎖的範圍內。
返回值 成功則返回0,若有錯誤則返回-1,錯誤原因存於errno.
4、功能
fcntl()用來操作
檔案描述符
的一些特性。fcntl 不僅可以施加建議性鎖,還可以施加強制鎖。同時,fcntl還能對檔案的某一記錄進行上鎖,也就是記錄鎖。
5、函式返回值
fcntl的返回值與命令有關。如果出錯,所有命令都返回-1,如果成功則返回某個其他值。下列四個命令有特定返回值:f_dupfd、f_getfd、f_getfl、f_getown.第乙個返回新的
檔案描述符
,接下來的兩個返回相應標誌,最後乙個返回乙個正的程序id或負的
程序組id。
自己如何建立百度百科 建立百度百科有什麼技巧
規範的語言措辭 百科詞條應使用 說明文 式平實簡明的語言及第三人稱描述,請不要使用 抒情文 或 散文 形式。客觀準確的描述 1 百科應使用第三人稱描述,第一人稱描述如 我認為 筆者以為 你覺得 等不應寫入百科 2 百科應使用準確的時間計量,今年 明年 近幾年 目前 現在 等等時間相關的不準確措辭應修...
自百度6 28事件後的自我反省
相信很多站長都難逃6.28事件的影響,筆者也在此次風波當中被徹底的擊敗,而且敗的是淋漓盡致 筆者幾乎所有 都倒下了,無論是正規的 還是擦邊的 都沒辦法逃過此次劫難,最讓人可悲的是事後無論如何去分析原因 都沒辦法摸透究竟 哪個因素會導致大規模k站,直到最後官方發布事件宣告才稍微了解到問題的所在。一 6...
「有事搜一搜 沒事看一看」,手機百度要抄誰後路?
這事olfecoykcu實上是 搜尋 推薦 戰略深入的乙個關鍵節點。過去雖然在行業層面談及這一策略很多,但使用者對這一點的感知偏弱,而現在全新品牌主張的提出可以看出,將在使用者層強化 搜尋 推薦 的整體認知。為什麼要做 搜尋 推薦 雙引擎?搜尋 推薦 將會乾掉誰的飯碗?純推薦模式有天生缺陷 這兩年今...