控制 socket descriptors 函式原型 #include <sys/unistd.h> #include <sys/fcntl.h> int fcntl(int s, int cmd, long arg);說明 這個函式通常用來進行檔案鎖定與其它檔案導向的用途,但是它也有一對 socket 相關的函式,你之後可能會用的到。 參數 s 是 你想要控制的 socket descriptor,而 cmd 應該要設定為 F_SETFL,至於 arg 可以是下列任一個指令(如我所述,參數比我這邊介紹的還要多,但是我只會探討與 socket 相關的部分)。
傳回值
成功時傳回零,錯誤時傳回 -1(並設定相對應的 errno) fcntl() system call 依據用法不同而會有不同的傳回值,但是我在這裡不會全部涵蓋,因為它們與 socket 無關,細節請參考你電腦上的 fcntl() 使用手冊。 範例 int s = socket(PF_INET, SOCK_STREAM, 0); fcntl(s, F_SETFL, O_NONBLOCK); // 設定為非阻塞(non-blocking) fcntl(s, F_SETFL, O_ASYNC); // 設定為非同步 I/O參考 Blocking, send() |
09-Man 手册 >