1. 程式人生 > >1、阻塞/非阻塞

1、阻塞/非阻塞

/*
函式名 :int fcntl(int fd, int cmd); 
參  數 :int fd    -- 檔案描述符
參  數 :int cmd   -- 控制值
參  數 :flock *lock  -- (引數)
返回值 :【成功】返回依賴於cmd的值 【錯誤】返回-1,錯誤原因存於errno.
說  明 :fcntl針對檔案描述符提供控制。
*/
int fcntl(int fd, int cmd); 
int fcntl(int fd, int cmd, long arg); 
int fcntl(int fd, int cmd, struct flock *lock);

標頭檔案
#include 
<sys/types.h> #include <unistd.h> #include <fcntl.h> /*獲取 flag 值*/ int flags = fcntl(socket, F_GETFL, 0); /* 設定為非阻塞*/ fcntl(socket, F_SETFL, flags | O_NONBLOCK) /* 設定為阻塞 */ fcntl(socket, F_SETFL, 0)

/*非阻塞模式的訊息傳送*/
recv(sockfd, buff, buff_size,MSG_DONTWAIT);
/*非阻塞模式的訊息接受*/
send(scokfd, buff, buff_size, MSG_DONTWAIT);