函数原型:
int poll(struct pollfd fd[], nfds_t nfds, int timeout);
参数:
1)第一个参数:一个结构数组,struct pollfd结构如下:
struct pollfd{
int fd; //文件描述符
short events; //请求的事件
short revents; //实际发生的的事件
};
events和revents是通过对代表各种事件的标志进行逻辑或运算构建而成的。events包括要监视的事件,poll用已经发生的事件填充revents。
常用的poll函数的事件标志符值:
常量 及 说明
POLLIN - 普通数据可读
POLLPRI - 高优先级数据可读
POLLOUT - 普通数据可写
POLLERR - 发生错误
POLLHUP - 发生挂起
注意:后两个只能作为描述字的返回结果存储在revents中,而不能作为测试条件用于events中。
2)第二个参数nfds:要监视的描述符的数目。
3)最后一个参数timeout:是一个用毫秒表示的时间,是指定poll在返回前没有接收事件时应该等待的时间。如果 它的值为-1,poll就永远都不会超时。如果整数值为32个比特,那么最大的超时周期大约是30分钟。
timeout的值和说明:
- 列表内容INFTIM 永远等待
- 0 立即返回,不阻塞进程
- >0 等待指定数目的毫秒数