1. poll函数原型:
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
参数:
- fds:指向一个结构体数组的第0个元素的指针,每个数组元素都是一个struct pollfd结构,用于指定测试某个给定的fd的条件
- nfds:表示fds结构体数组的长度
- timeout:表示poll函数的超时时间,单位是毫秒
函数功能:
- 监视并等待多个文件描述符的属性变化
函数返回值:
- 返回值小于0,表示出错
- 返回值等于0,表示poll函数等待超时
- 返回值大于0,表示poll由于监听的文件描述符就绪返回,并且返回结果就是就绪的文件描述符的个数。
2. pollfd结构体
struct pollfd
{
int fd; //文件描述符
short events; //要求查询的事件掩码
short revents; //返回的事件掩码
}
成员变量说明:
- fd:每一个 pollfd 结构体指定了一个被监视的文件描述符,可以传递多个结构体,指示 poll() 监视多个文件描述符。
- events:表示要告诉操作系统需要监测fd的事件(输入、输出、错误),每一个事件有多个取值
- revents:revents 域是文件描述符的操作结果事件,内核在调用返回时设置这个域。events 域中请求的任何事件都可能在 revents 域中返回