5 回答

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

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

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