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

2021-10-10 04:04:14 字數 846 閱讀 9883

1、select函式

#include

intselect

(int maxfd

, fd_set* readset, fd_set* writeset, fd_set* exceptset

,const

struct timeval* timeout)

;

說明:

作用:將多個檔案描述符集中到一起監視。

2、使用

fd_set型別物件的賦值方式:

fd_zero

(fd_set* fdset): 將fd_set變數的所有位初始化為0。

fd_set(int fd, fd_set* fdset):在引數fd_set指向的變數中註冊檔案描述符fd的資訊。

fd_clr

(int fd, fd_set* fdset):引數fd_set指向的變數中清除檔案描述符fd的資訊。

fd_isset

(int fd, fd_set* fdset):若引數fd_set指向的變數中包含檔案描述符fd的資訊,則返回真。

3、示例
#include

#include

#include

#include

#define buf_size 30

intmain

(int argc,

char

const

*ar**)

else

if(result ==0)

// 監聽描述符事件超時

else}}

return0;

}

select實現I O復用

select 系統提供select函式來實現多路復用輸入 輸出模型。select系統呼叫是用來讓我們的程式監視多個檔案控制代碼的狀態變化的。程式會停在select這裡等待,直到被監視的檔案控制代碼有乙個或 多個發生了狀態改變。關於檔案控制代碼,其實就是乙個整數,我們最熟悉的控制代碼是0 1 2三 個...

I O復用 select 學習

最近在學習網路程式設計,覺得select這塊的知識點確實比較難以理解,在學習socket網路通訊機制時,只是習慣寫諸如connect accept recv或recvfrom這樣的阻塞程式,所謂阻塞方式block,顧名思義,就是程序或是執行緒執行到這些函式時必須等待某個事件的發生,如果事件沒有發生,...

I O復用 select和poll函式 一

我們看到上面的tcp客戶同時處理兩個輸入 標準輸入和tcp套接字。我們遇到的問題就是在客戶阻塞於 標準輸入上的 fgets呼叫期間,伺服器程序會被殺死。伺服器tcp雖然正確地給客戶tcp傳送乙個fin,但是既然客戶程序阻塞於從標準輸入讀入的過程,它將看不到這個rof,知道從套接字讀時為止 可能已經過...