poll系统调用
1、poll系统调用和select类似,也是指定时间内轮询一定数量的文件描述符,以测试其中是否有就绪者,poll函数的原型如下:
#include<poll.h>
int poll(struct pollfd* fds, nfds_t nfds, int timeout);
timeout参数指定poll的超时值,单位是毫秒。当timeout为-1时,poll调用将永远阻塞,直到某个事件发生;当timeout为0时,poll调用将立即返回。
注:poll系统调用的返回值的含义与select相同,不同的是,poll系统调用通过一个结构体数组来指定关心的描述符,另外对于每一个描述符可以分别指定触发的事件,这些是通过struct pollfd结构体来实现的。
1)fds参数是一个pollfd结构类型的数组,它指定所有我们感兴趣的文件描述符上发生的可读、可写和异常等事件,pollfd结构体的定义如下: struct pollfd
{ int fd; //指定文件描述符 short events;//关心的事件 short revents; //实际发生的事件,由内核来填充 }
其中events成员告诉poll监听fd上的哪些事件,它是一系列事件的按位或; revents成员由内核修改,以通知应用程序fd实际发生了哪些事件。poll支持的事件类型如下表: