poll系統調用和select相似,也是在指定時間內輪詢必定數量的文件描述符,以測試其中是否有就緒者。數組
不一樣於select使用三個位圖來表示三個fdset的方式,poll使用一個pollfd的指針實現。ide
poll API測試
1)fds參數是一個pollfd結構類型的數組,它指定全部咱們感興趣的文件描述符上發生的可讀、可寫和異常事件。spa
poll結構體的定義以下:指針 fd成員指定文件描述符,events成員告訴poll監聽fd上的哪些事件,它是一系列事件的按位或;blog revents成員則由內核修改,以通知應用程序fd上實際發生了哪些事件。事件 poll支持的事件類型以下圖所示get |
2)nfds參數指定被監聽的時間集合fds的大小。其類型nfds_t的定義以下:it
typedef unsigned long int nfds_t;
io
3)timeout參數指定poll的超時值,單位是毫秒。當timeout爲-1時,poll調用將永遠阻塞,直到某個事件發生;當timeout爲0時,poll調用將當即返回。
poll系統調用的返回值的含義與select相同。
poll成功時返回就緒(可讀、可寫和異常)文件描述符的總數。若是在timeout時間內沒有任何文件描述符就緒,select將返回0。poll失敗時返回-1並設置errno。若是在poll等待期間,程序接收到信號,則poll當即返回-1並設置errno爲EINTR。