9.11. fcntl()
控制 socket descriptors
函式原型
說明
這個函式通常用來進行檔案鎖定與其它檔案導向的用途,但是它也有幾個與 socket 相關的功能,你之後可能會用的到。
參數 s 是 你想要控制的 socket descriptor,而 cmd 應該要設定為 F_SETFL,至於 arg 可以是下列任一個指令(如我所述,參數比我這邊介紹的還要多,但是我只會探討與 socket 相關的部分)。
O_NONBLOCK 將 socket 設定為 non-blocking,細節請參考 blocking 章節。
O_ASYNC 將 socket 設定為非同步 I/O(asynchronous I/O),當 socket 上的資料就緒可收時,會觸發 SIGIO 訊號。這幾乎不會遇到,並且在本書的討論範圍之外,而我認為這只會在某些系統上出現。
傳回值
成功時傳回零,錯誤時傳回 -1(並設定相對應的 errno)
fcntl() system call 依據不同的用法會有不同的傳回值,但是我在這裡不會全部涵蓋,因為有些與 socket 無關,細節請參考 fcntl() 的 man 手冊。
範例
參考
Blocking, send()
Last updated