Fcntl檢視原始碼討論檢視歷史
Fcntl |
fcntl是計算機中的一種函數,通過fcntl可以改變已打開的文件性質。fcntl針對描述符提供控制。參數fd是被參數cmd操作的描述符。針對cmd的值,fcntl能夠接受第三個參數int arg。fcntl的返回值與命令有關。如果出錯,所有命令都返回-1,如果成功則返回某個其他值。
簡介
F_DUPFD用來查找大於或等於參數arg的最小且仍未使用的文件描述符,並且複製參數fd的文件描述符。執行成功則返回新複製的文件描述符。新描述符與fd共享同一文件表項,但是新描述符有它自己的一套文件描述符標誌,其中FD_CLOEXEC文件描述符標誌被清除。請參考dup2()。F_SETFL 設置文件描述符狀態旗標,參數arg為新旗標,但只允許O_APPEND、O_NONBLOCK和O_ASYNC位的改變,其他位的改變將不受影響。F_SETLK 設置文件鎖定的狀態。此時flcok 結構的l_type 值必須是F_RDLCK、F_WRLCK或F_UNLCK。如果無法建立鎖定,則返回-1,錯誤代碼為EACCES 或EAGAIN。
評價
fcntl的返回值與命令有關。如果出錯,所有命令都返回-1,如果成功則返回某個其他值。下列四個命令有特定返回值:F_DUPFD、F_GETFD、F_GETFL、F_GETOWN.第一個返回新的文件描述符,接下來的兩個返回相應標誌,最後一個返回一個正的進程ID或負的進程組ID。[1]