多路IO之poll机制
poll函数
1.函数原型
#include <poll.h>
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
2.功能
- 监听集合有没有动静,如果没有动静就阻塞
- 如果有动静就成功返回,返回值为集合中有动静的fd的数量
3.参数
- fds:这个参数写为struct pollfd fds[]更好理解些,第一个参数要求传递一个struct pollfd结构体数组。
-
这个数组就相当于select的文件描述符集合,只不过select是使用fd_set来定义的,而poll的集合是一个数组。
-
struct pollfd的成员:
-
struct pollfd { int fd; /* file descriptor */ short events; /* 设置我们希望发生的事件,比如读事件,这个需要我们自己设置 */ short revents; /* 实际发生的事情,比如读事件,由poll机制自己设置 */ };
-
struct pollfd fds[2]; fds[0].fd = 0; fds[0].events = POLLIN;//读事件(输入事件) fds[1].fd = 3; fds[1].events = POLLIN;//读事件(输入事件)
-
一般来说不
-