Select歸納總結

2021-06-27 16:42:20 字數 1455 閱讀 2505

#include #include int select(int maxfdpl, fd_set *readset, fd_set *write, fd_set  *exceptset, const struct timeval *timeout);

返回值:該函式的返回值表示跨所有描述符集的已就緒的總位數。

如果在任何描述符就緒以前定時器到時,那麼返回0。

返回-1表示出錯(例如本函式被乙個說捕獲的訊號中斷)。

1 int maxfdp是乙個整數值,是指集合中所有檔案描述符的範圍,即所有檔案描述符的最大值加1,指定的是描述符的個數而非 最大值,而描述符是從0開始的。標頭檔案中定義的fd_setsize常值是資料型別fd_set中的描述符總數,其值通常是1024。

2 readset、writeset、exceptset指定我們要讓核心測試讀、寫和異常條件的描述符。如果對某乙個的條件不感興趣,就可以把它設為空指標。

目前支援的異常條件只有兩個:

(1)某個套接字的帶外資料到達。

(2)某個已置為分組模式的偽終端存在可從其主端讀取的控制狀態資訊。 對於

fd_set

型別的變數我們所能做的就是宣告乙個變數,為變數賦乙個同種型別變數的值,或者使用以下幾個巨集來控制它:

#include int fd_zero(int fd, fd_set *fdset);   //clear all bits in fdset*

int fd_clr(int fd, fd_set *fdset); //turn on the bit for fd in fdset

int fd_set(int fd, fd_set *fd_set); //turn off the bit for fd in fdset

int fd_isset(int fd, fd_set *fdset); //is the bit for fd on in fdset

3timeout:告知核心等待所指定描述符中的任何乙個就緒可花多長時間

struct timeval

有三種情況:

timeout == null  等待無限長的時間。等待可以被乙個訊號中斷。當有乙個描述符做好準備或者是捕獲到乙個訊號時函式會返回。如果捕獲到乙個訊號, select函式將返回 -1,並將變數 erro設為 eintr。

timeout->tv_sec == 0 &&timeout->tv_usec == 0 不等待,直接返回。加入描述符集的描述符都會被測試,並且返回滿足要求的描述符的個數。這種方法通過輪詢,無阻塞地獲得了多個檔案描述符狀態。

timeout->tv_sec !=0 ||timeout->tv_usec!= 0 等待指定的時間。當有描述符符合條件或者超過超時時間的話,函式返回。在超時時間即將用完但又沒有描述符合條件的話,返回 0。對於第一種情況,等待也會被訊號所中斷。

Poll歸納總結

include int poll struct pollfd fd,nfds t nfds,int timeout 返回 若有就緒操作符則為其數目。若超時則為0。若 出錯則為 1。第乙個引數是指向乙個結構陣列第乙個陣列元素的指標,每個陣列元素都是乙個pollfd結構,用於指定測試某個給定描述符發的的...

CSS歸納總結

選擇器的分組 css選擇器分為 1.群組選擇器 如 p,body,img,div 2.兄弟選擇器 如 p p 3.屬性選擇器 如 p title 4.包含 後代 選擇器 如 body ulli 5.子元素選擇器 如 div p 6.id選擇器 如 mydiv 7.類選擇器 如 class1 8.偽元...

c assert 歸納總結

用法總結與注意事項 1 在函式開始處檢驗傳入引數的合法性 如 int resetbuffersize int nnewsize 2 每個 assert 只檢驗乙個條件 因為同時檢驗多個條件時 如果斷言失敗 無法直觀的判斷是哪個條件失敗 不好 assert noffset 0 noffset nsiz...