1. poll函數原型:?
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
參數:?
- fds:指向一個結構體數組的第0個元素的指針,每個數組元素都是一個struct pollfd結構,用于指定測試某個給定的fd的條件?
- nfds:表示fds結構體數組的長度?
- timeout:表示poll函數的超時時間,單位是毫秒?
函數功能:?
- 監視并等待多個文件描述符的屬性變化?
函數返回值:?
- 返回值小于0,表示出錯?
- 返回值等于0,表示poll函數等待超時?
- 返回值大于0,表示poll由于監聽的文件描述符就緒返回,并且返回結果就是就緒的文件描述符的個數。
?
2. pollfd結構體??
struct pollfd
{int fd; //文件描述符short events; //要求查詢的事件掩碼short revents; //返回的事件掩碼
}
成員變量說明:?
- fd:每一個 pollfd 結構體指定了一個被監視的文件描述符,可以傳遞多個結構體,指示 poll() 監視多個文件描述符。?
- events:表示要告訴操作系統需要監測fd的事件(輸入、輸出、錯誤),每一個事件有多個取值?
- revents:revents 域是文件描述符的操作結果事件,內核在調用返回時設置這個域。events 域中請求的任何事件都可能在 revents 域中返回
?