Linux poll详解
导读:Linux,小编为大家讲一讲Linux的IT小经验,一定能解决您的问题的,一起来了解吧! poll 函数用于检测一组文件描述符( F ile D escriptor, fd )上的可读可写和出错事件,其函数
Linux
小编为大家讲一讲Linux的IT小经验,一定能解决您的问题的,一起来了解吧!
poll 函数用于检测一组文件描述符(File Descriptor, fd)上的可读可写和出错事件,其函数签名如下:
#include <poll.h>
int poll(struct pollfd* fds, nfds_t nfds, int timeout);
参数解释:
- fds:指向一个结构体数组的首个元素的指针,每个数组元素都是一个struct pollfd结构,用于指定检测某个给定的 fd 的条件;
- nfds:参数 fds 结构体数组的长度,nfds_t 本质上是 unsigned long int,其定义如下:
typedef unsigned long int nfds_t;
- timeout:表示 poll 函数的超时时间,单位为毫秒。
struct pollfd 结构体定义如下:
struct pollfd {
int fd; /* 待检测事件的 fd */
short events; /* 关心的事件组合 */
short revents; /* 检测后的得到的事件类型 */
};
struct pollfd的 events 字段是由开发者来设置,告诉内核我们关注什么事件,而 revents 字段是 poll 函数返回时内核设置的,用以说明该 fd 发生了什么事件。
events 和 revents 一般有如下取值:
| 事件宏 | 事件描述 | 是否可以作为输入(events) | 是否可以作为输出(revents) |
|---|---|---|---|
| POLLIN | 数据可读(包括普通数据&优先数据) | 是 | 是 |
| POLLOUT | 数据可写(普通数据&优先数据) | 是 | 是 |
| POLLRDNORM | 等同于 POLLIN | 是 | 是 |
| POLLRDBAND | 优先级带数据可读(一般用于 Linux 系统) | 是 | 是 |
| POLLPRI | 高优先级数据可读,例如 TCP 带外数据 | 是 | 是 |
| POLLWRNORM | 等同于 POLLOUT | 是 | 是 |
| POLLWRBAND | 优先级带数据可写 | 是 | 是 |
| POLLRDHUP | TCP连接被对端关闭,或者关闭了写操作,由 GNU 引入 | 是 | 是 |
| POPPHUP | 挂起 | 否 | 是 |
| POLLERR | 错误 | 否 | 是 |
| POLLNVAL | 文件描述符没有打开 | 否 | 是 |
poll检测一组 fd 上的可读可写和出错事件的概念与前文介绍select的事件含义一样,这里就不再赘述。poll
相关阅读
-
win10旗舰版一键还原步骤 关于win10系统备份及还原方法
为大家分享win10旗舰版一键还原步骤和关于win10系统备份及还原方法的电脑小知识,一定能解决您的问题的,一起来了解吧! 在备份后担心别人对现在的系统进行随意还原而导致系统文件丢失等
-
win10电脑输入法打字不显示选字框 电脑没有输入法调不出来的原因
今天小编介绍win10电脑输入法打字不显示选字框方面的介绍,下面小编为您详细解答 有的小伙伴可能会遇到以下这样的问题: 中文模式没有选词框示例图 明明已经切换到中文模式了,但是打出
-
优麒麟安装方法详细介绍 优麒麟怎么安装windows系统
一个电脑小知识,为大家介绍优麒麟安装方法详细介绍的教程内容,关于优麒麟安装方法详细介绍 优麒麟怎么安装windows系统,接下来一起来看看吧。 优麒麟是一款非常不错的Linux系统,不过相
-
win7连不上网络怎么办 win7无法连接网络怎么办
相对于大多数人win7无法连接网络怎么办方面的内容,关于win7连不上网络怎么办 win7无法连接网络怎么办,下面小编为您详细解答 今天小编要为大家带来的就是如何解决win7无法连接网络怎么办


