15 io復用 函式用法

2021-09-23 15:27:30 字數 952 閱讀 2899

1.設定套接字為非阻塞模式 int fcntl(int fd,int cmd,long arg);

2.初始化描述符集 void fd_zero(fd_set *fdset);

3.將乙個描述符新增到描述符集 void fd_set(int fd, fd_set *fdset);

4.將乙個描述符從描述符集中刪除 void fd_clr(int fd, fd_set *fdset);

5.檢測指定的描述符是否有事件發生 int fd_isset(int fd, fd_set *fdset);

示例:fd_set rset;//建立乙個描述符集rset

fd_zero(&rset);//對描述符集rset清零

fd_set(0, &rset);//將描述符0加入到描述符集rset中

fd_set(4, &rset);//將描述符4加入到描述符集rset中

fd_set(5, &rset);//將描述符5加入到描述符集rset中

6.select函式

int select(int maxfd, fd_set *readset, fd_set *writeset, fd_set *exceptset, const struct timeval *timeout);

返回值為0超時、返回值為-1出錯,返回值大於0表示準備好的檔案描述符數量

maxfd 指定要檢查的描述符的範圍,所檢測描述符最大值+1

readset 讀描述符集

writeset 寫描述符集

exceptset 異常描述符集,帶外資料,一般null

timeout 超時時間,超過規定時間後喚醒

struct timeval;

//比如等待10.2秒

struct timeval timeout;

timeoout.tv_sec = 10;

timeoout.tv_usec = 200000;

I O復用select函式的簡單用法

1 select函式 include intselect int maxfd fd set readset,fd set writeset,fd set exceptset const struct timeval timeout 說明 作用 將多個檔案描述符集中到一起監視。2 使用 fd set型...

IO復用 poll函式

poll提供的功能與select函式類似,不過在處理流裝置時,它能夠提供額外的資訊 include int poll struct pollfd fdarray,unsigned long nfds,int timeout 返回 若有就緒的描述符則為其數目,若超時則為0,若出錯則為 1 第乙個引數是...

IO復用函式select poll epoll

include include int select int maxfdp1,fd set readset,fd set writeset,fd set exceptset,const struct timeval timeout 返回值 就緒描述符的數目,超時返回0,出錯返回 1 第乙個引數max...