poll
函数:在指定时间内轮询一定数量的文件描述符,测试是否有齐就绪者。
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
- fds参数数组记录所有监听的文件描述符以及关注的事件
struct pollfd
{
int fd;//文件描述符
short events;//关注的事件类型 POLLIN | POLLRDHUP
short revents;//指定文件描述符上实际发生的事情,由内核填充
}
- nfds参数为指定被监听事件集合fds的大小
- timeout参数表示超时时间,单位毫秒,为-1时,将会一直阻塞运行,直到某个事件的发生。如果为0的时候,立即返回。
- 返回-1表示出错
返回0表示超时
返回大于0返回就绪的文件描述符个数
特点
和select对比,poll的特点:
- poll将监听的文件描述符和其关注的事件分开表示,poll不需要用三个结构体来表示不同的事件类型
- Poll将用户注册的关注事件与内核修改的事件分开表示,poll不需要每次都调用前重新设置