簡體   English   中英

select() 如何返回除 -1、0 或 1 之外的任何值?

[英]How would select() return anything other than -1, 0, or 1?

這對我來說絕對只是一個愚蠢的誤解,但是 select() 的手冊頁指出:

timeout 參數指定 select() 應阻止等待文件描述符准備就緒的時間間隔。 調用將阻塞,直到:

*文件描述符准備就緒;

*調用被信號處理程序中斷; 或者

*超時到期。

而且,那

成功時,select() 和 pselect() 返回三個返回的描述符集中包含的文件描述符的數量(即在 readfds、writefds、exceptfds 中設置的總位數),如果超時到期可能為零在任何有趣的事情發生之前。 出錯時返回-1,設置errno表示出錯; 文件描述符集未修改,超時未定義。

所以我的問題是——如果它在文件描述符准備好后立即停止阻塞,它會不會立即返回 1? 如果沒有 fds 准備好,則返回 0,否則返回錯誤並返回 -1。

顯然在實踐中它返回超過 1:重點是你應該能夠讀/寫多個 fds,對吧?

由於現代搶占式多任務的工作方式,多個描述符可能會在您的進程被喚醒之前准備就緒,並且select調用對描述符進行計數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM