您好,登錄后才能下訂單哦!
poll系統調用和select類似,也是在指定時間內輪詢一定數量的文件描述符,以測試其中是否有就緒者。
不同于select使用三個位圖來表示三個fdset的方式,poll使用一個pollfd的指針實現。
poll API
1)fds參數是一個pollfd結構類型的數組,它指定所有我們感興趣的文件描述符上發生的可讀、可寫和異常事件。
poll結構體的定義如下: fd成員指定文件描述符,events成員告訴poll監聽fd上的哪些事件,它是一系列事件的按位或; revents成員則由內核修改,以通知應用程序fd上實際發生了哪些事件。 poll支持的事件類型如下圖所示 |
2)nfds參數指定被監聽的時間集合fds的大小。其類型nfds_t的定義如下:
typedef unsigned long int nfds_t;
3)timeout參數指定poll的超時值,單位是毫秒。當timeout為-1時,poll調用將永遠阻塞,直到某個事件發生;當timeout為0時,poll調用將立即返回。
poll系統調用的返回值的含義與select相同。
poll成功時返回就緒(可讀、可寫和異常)文件描述符的總數。如果在timeout時間內沒有任何文件描述符就緒,select將返回0。poll失敗時返回-1并設置errno。如果在poll等待期間,程序接收到信號,則poll立即返回-1并設置errno為EINTR。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。