linux下的I O復用函式

2021-07-09 18:26:05 字數 1078 閱讀 2005

select系統呼叫:

select系統呼叫的功能是:在一段時間裡監聽使用者感興趣的檔案描述符上的可讀,可寫

,異常等事件。

這是linux上的select系統呼叫的原型: 

各個引數說明:

nfds指定被監聽的檔案描述符的總數,它通常被設定為最大的檔案描述符的值加一,因為檔案描述符是從

0開始的。

readfds,

writefds

,exceptionfds

,分別指向可讀,可寫,異常事件對應的檔案描述符集合,應用程式呼叫

select

時,通過這三個引數傳入自己感興趣的檔案描述符。

select

返回時,核心將修改它們來通知應用程式哪些些檔案描述符已經就緒。這三個引數的結構如下:

可以看到,這個結構體只包含了乙個長度為32

整形陣列,共

1024

個位,每一位表示乙個檔案描述符。

timeout表示超超時時間,

struct timespec ;

由此可見,select

為我們提供了乙個微秒級的定時時間。

如果tv_sec

和tv_usec都為0

,則select

立即返回,如果,

timeout

為空,則

select

一直阻塞,知道某個檔案描述符就緒。

select成功時返回就緒的檔案描述符的個數,如果在超時時間沒有就緒的檔案描述符,則

select返回0

,失敗時返回

-1並設定

errno

。如果在

select

等待期間,程序接收到訊號,則

select

立即返回

-1,並設定

errno

為eintr

。//未完待續。

Linux下I O復用模型

以下內容引述至 linux unix系統程式設計手冊 常見的程式使用的i o模型都是單個程序每次只在乙個檔案描述符上執行i o操作,每次i o系統呼叫會阻塞直到完成資料傳輸。對於許多應用來說,傳統的阻塞式i o模型已經足夠了,但這不代表所有的應用都能得到滿足。非阻塞式i o可以讓我們周期性地檢查 輪...

Linux下的i o復用 select

1 i o復用 乙個程序或者乙個執行緒能夠同時對多個檔案描述符 socket 提供服務,伺服器上的程序或執行緒如何將多個檔案描述符統一監聽,當任意乙個檔案描述符上有事件發生,其都能及時處理。2 select函式 啟動監聽 int select int nfds,fd set readfds fd s...

Linux下的i o復用 poll

1 i o復用 乙個程序或者乙個執行緒能夠同時對多個檔案描述符 socket 提供服務,伺服器上的程序或執行緒如何將多個檔案描述符統一監聽,當任意乙個檔案描述符上有事件發生,其都能及時處理。2 poll 函式 函式原型 int poll struct pollfd fds,int nfds,int ...