5 回答

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

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

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