多路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;//读事件(输入事件) -
一般来说不会对写文件描述符,写是不阻塞的。
-
poll监听时如果没有动静就阻塞,有动静不再阻塞,返回由动
-

本文详细介绍了Linux中的poll函数,包括其函数原型、功能、参数解析以及使用示例。poll机制用于监听文件描述符集合的事件,当有事件发生时返回相应fd的数量。超时时间可以设置为阻塞或非阻塞,并且可以通过检查文件描述符的“发生的事件”与“实际事件”来确定何时进行读写操作。
最低0.47元/天 解锁文章
3280

被折叠的 条评论
为什么被折叠?



