學習筆記 select函式

2021-08-03 03:58:25 字數 936 閱讀 8913

select原型:

int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);
select函式可以使用各種套接字巨集來控制io。

fd_clr(int fd, fd_set *set);

clear–將檔案描述符從集合set中移除。

fd_isset(int fd, fd_set *set);

檢測fd是否在集合內,是 返回真。

fd_set(int fd, fd_set *set);

加入集合。

fd_zero(fd_set *set);

清理整個集合使其不含任何描述符。

select提供了乙個結構體:fd_set.

通常為乙個小於等於32位的描述符,由fd_setsize決定。

使用select函式的過程一般是:

先呼叫巨集fd_zero將指定的fd_set清零,然後呼叫巨集fd_set將需要測試的fd加入fd_set,接著呼叫函式select測試fd_set中的所有fd,最後用巨集fd_isset檢查某個fd在函式select呼叫後,相應位是否仍然為1。

select return值:

-1 select error

0 select time out

1 success

timeout 使用的結構體

struct timeval ;

andstruct timespec ;

設定2.5秒

timeout.tv_sec = 2;

timeout.tv_usec = 500000;

linux c學習筆記 select函式詳解

select系統呼叫是用來讓我們的程式監視多個檔案控制代碼 file descriptor 的狀態變化的。程式會停在select這裡等待,直到被監視的檔案控制代碼有某乙個或多個發生了狀態改變。何為檔案控制代碼?檔案控制代碼在linux裡很多,如果你man某個函式,在函式返回值部分說到成功後有乙個檔案...

Select學習筆記

include intselect int maxfdp1,fd set readset,fd set writeset,fd set exceptset,struct timeval timeout 返回 做好準備的檔案描述符的個數。超時為0,錯誤為 1。struct timeval 有以下三種情...

套接字 學習筆記三 select函式

編寫linux應用程式時,經常會遇到需要檢查好幾個輸入狀態才能確定下一步行動的情況,這種情況可稱之為忙等待。在單使用者系統中執行乙個忙等待是可以接受的,它不停地掃瞄 輸入裝置看是否有資料,如果有資料到達才讀取它。這種做法很耗cpu時間。select函式 這裡函式又稱呼叫 系統呼叫 檢查乙個由多個檔案...