select方法是多个UNIX平台支持的非常常见的I/O多路复用技术,通过描述符集合来表示检测的I/O对象,通过三个不同的描述符集合来描述检测I/O事件,可读,可写,异常 。 select 的缺点是 所支持的文件描述符的个数是有限的。在Linux系统中,select
d的默认最大值为1024
poll函数的原型
与内乎交互的数据结构有所变化,也突破了文件描述符的个数限制
int poll(struct pollfd *fds ,unsigned long nfds,int timeout);
struct pollfd {
int fd; /* file descriptor */
short events; /* events to look for */
short revents; /* events returned */
};
fd 文件描述符
events 表示多个不同的事件
宏定义:
#define POLLIN 0x0001 /* any readable data available */
#define POLLPRI 0x0002 /* OOB/Urgent readable data */
#define POLLOUT 0x0004 /* file descriptor is writeable */
revent 理解为 returned events 不需要每次测完重置待检测的描述字和感兴趣的事件,直接将结果保留在revents中
返回检测到事件的个数