Linux中的poll()函数是用来对多个文件描述符进行监听的,以便在有事件发生时进行处理。它的使用方法如下:
引入头文件:#include <poll.h>定义一个pollfd结构体数组,并初始化:struct pollfd fds[nfds];其中,nfds是需要监听的文件描述符的数量。
设置每个文件描述符的事件类型和监视对象:fds[i].fd = fd; // 监视的文件描述符fds[i].events = events; // 监视的事件类型,如POLLIN(可读), POLLOUT(可写)fds[i].revents = 0; // 实际发生的事件类型,由系统填充调用poll()函数进行监听: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()函数的基本使用方法,可以根据具体需求进行适当的调整和扩展。


