select函式的使用

2022-04-11 15:02:43 字數 796 閱讀 5594

select函式是 i/o 復用中非常重要的乙個函式,屬於併發程式設計的。它能夠監視我們需要監視的檔案描述符的變化情況–讀、寫或者異常

#include select.h>

intselect(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set*errorfds,struct timeval *timeout

select將檔案描述符放入乙個集合,成為檔案描述符集fd_set

2. 引數

1. maxfdp是乙個整數值,集合中檔案描述符的範圍,所有檔案描述符最大值 + 1

2. fd_set *readfds。讀檔案描述符集,關心檔案描述符的讀變化

3. fd_set *writefds。寫檔案描述符集,關心檔案描述符的寫變化

4. fd_set *errorfds。監視檔案錯誤異常

5. struct timeval* timeout是select的超時時間,這個引數至關重要,它可以使select處於三種狀態。

第一:null,即不傳入時間結構,就是將select至於阻塞狀態,一定等到監視檔案描述符集合中某個檔案描述符發生變換為止;

第二:0秒0毫秒,就變成了乙個純粹的非阻塞函式,不管檔案描述符有無變化,立刻返回。無變化返回0, 有變化返回乙個正值

第三:timeout的值大於0,select在timeout時間內阻塞,超時時間之內有事件到來就返回,否則立即返回,返回值同第二條

負值:select錯誤

正值:某些檔案可讀、可寫或者出錯

0:等待超時,沒有可讀、可寫或者出錯的檔案

select函式的使用

select 函式 系統提供 select 函式來實現多路復用輸入 輸出模型。原型 include sys time.h include unistd.h select 函式 系統提供 select 函式來實現多路復用輸入 輸出模型。原型 include sys time.h include uni...

select 函式 使用

告知核心等待某一或某些事件發生 而後喚醒程序 或超時返回 int select int maxfdp1,fd set readset,fd set writeset,fd set excepset,const struct timeval timeout 返回準備好的描述符數量 超時返0錯誤 1 主...

select函式使用

這兩天寫了這麼一段 select直接返回 1,錯誤資訊是 invalid argments 顯然沒有達到阻塞超時的效果。如下 bool issocketwaitread inf fd,int usec 這段 在標準的linux環境可以執行,但是在arm體系架構的國產化作業系統下,返回值永遠是 1 修...