Linux中的poll()函數是用來對多個文件描述符進行監聽的,以便在有事件發生時進行處理。它的使用方法如下:
#include <poll.h>
struct pollfd fds[nfds];
其中,nfds是需要監聽的文件描述符的數量。
fds[i].fd = fd; // 監視的文件描述符
fds[i].events = events; // 監視的事件類型,如POLLIN(可讀), POLLOUT(可寫)
fds[i].revents = 0; // 實際發生的事件類型,由系統填充
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
其中,timeout是超時時間(以毫秒為單位),可以設置為-1表示無限等待。
if (fds[i].revents & POLLIN) {
// 可讀事件發生,進行相應處理
}
if (fds[i].revents & POLLOUT) {
// 可寫事件發生,進行相應處理
}
// 可以根據其他事件類型進行相應處理
注意:poll()函數返回時,會將實際發生的事件類型填充到revents字段中,可以通過位運算進行判斷。
這是poll()函數的基本使用方法,可以根據具體需求進行適當的調整和擴展。