5 回答

TA貢獻2037條經驗 獲得超6個贊
select的目的: 我想你應該知道,recv,read,scanf這類函數是阻塞函數,也就是說沒有得到數據是不會返回的,這就造成了一個問題,程序執行到這些函數里面的時候就一直等待,而這個時候如果要有其他的操作根本得不到響應。select函數就是為了解決

TA貢獻1843條經驗 獲得超7個贊
SELECT( ) ——是測試工作區函數;
SELECT(3):意思是返回當前的工作區號,至于SELECT(3)的返回值為0,你再仔細看下題
你只寫select(3)的返回值怎么是0,我也無法準確解釋

TA貢獻1829條經驗 獲得超7個贊
int select (int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, const struct timeval * timeout); Return >0:就緒描述字的正數目 -1:出錯 0 :超時 struct timeval{ long tv_sec; // seconds long tv_usec; // microseconds } 1. 永遠等下去:僅在有一個描述字準備好I/O時返回。置為NULL 2. 等待一段固定時間:在有一個描述字準備好I/O時返回,但不超過由該參數所指向的timeval結構中指定的秒數和微秒數。 3. 不等待:檢查完描述字后立即返回,稱之為輪詢(polling)。該參數必須指向一共timeval結構,其中的定時器值為0(秒數和微秒數)。 readset writeset exceptset指定我們要讓內核測試讀、寫和異常條件的描述字。如果對某一個的條件不感興趣,就可以把它設為NULL。如果三個指針都為NULL,我們就有了一個比sleep()函數更為精確的定時器(sleep()以秒為最小單位,這個以微妙為單位)。
- 5 回答
- 0 關注
- 630 瀏覽
添加回答
舉報