epoll_ctl函数的使用

news/2024/7/9 16:49:42 标签: epoll, c/c++
#include <sys/epoll.h>

int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
作用:
这个系统调用用于操作epoll函数所生成的实例(该实例由epfd指向),向fd实施op操作。
参数一:epfd
epoll调用产生的文件描述符
参数二:op
操作的类型,具体包含
       EPOLL_CTL_ADD
              Register the target file descriptor fd on the epoll instance
              referred to by the file descriptor epfd and associate the
              event event with the internal file linked to fd.

       EPOLL_CTL_MOD
              Change the event event associated with the target file
              descriptor fd.

       EPOLL_CTL_DEL
              Remove (deregister) the target file descriptor fd from the
              epoll instance referred to by epfd.  The event is ignored and
              can be NULL (but see BUGS below).
参数三:fd
op实施的对象
参数四:event
struct epoll_event {
    __uint32_t events; /* Epoll events */
    epoll_data_t data; /* User data variable */
};

events成员变量:
可以是以下几个宏的集合: EPOLLIN :表示对应的文件描述符可以读(包括对端SOCKET正常关闭); EPOLLOUT:表示对应的文件描述符可以写; EPOLLPRI:表示对应的文件描述符有紧急的数据可读(这里应该表示有带外数据到来); EPOLLERR:表示对应的文件描述符发生错误; EPOLLHUP:表示对应的文件描述符被挂断; EPOLLET: 将EPOLL设为边缘触发(Edge Triggered)模式,这是相对于水平触发(Level Triggered)来说的。 EPOLLONESHOT:只监听一次事件,当监听完这次事件之后,如果还需要继续监听这个socket的话,需要再次把这个socket加入到EPOLL队列里。

data成员变量:
是一个union类型的变量,类型定义如下
typedef union epoll_data {
    void *ptr;
    int fd;
    __uint32_t u32;
    __uint64_t u64;
} epoll_data_t;

 

 

 

参考资料

http://www.man7.org/linux/man-pages/man7/epoll.7.html

转载于:https://www.cnblogs.com/Dream-Chaser/p/7401184.html


http://www.niftyadmin.cn/n/978610.html

相关文章

VMware虚拟机安装DOS6.22(一)

1、软件准备l 虚拟机软件这里用的是VMware11&#xff0c;当然你可以使用其他虚拟机&#xff0c;比如Virtual PC、VirtualBox、Bochs等&#xff0c;其中VirtualBox和Bochs是开源的&#xff0c;VMware和Virtual PC是商业软件l DOS6.22启动盘不必使用真正的软盘&#xff0c;使用虚…

解析Linux中的VFS文件系统之文件系统的来源与简介(一)

最近挂载了N多的文件系统&#xff0c;大致了不同文件系统的相应特性及挂载方式&#xff0c;却还是对Linux的文件系统没有从源码方面去了解。不求甚解确实不好不好。 于是借鉴一些大牛的博客及自己的理解&#xff0c;总结了博客系列&#xff1a; 一、VFS是什么&#xff1a; VFS是…

走迷宫

从起点到终点的最短移动序列&#xff0c;每次只能往上、下、左、右移动到相邻的单元格。任何时候都不能在阻碍格中&#xff0c;也不能走出迷宫之外&#xff0c;此题跟POJ3278有些相似&#xff0c;都是用了BFS /**此题的二维迷宫是从上到下&#xff0c;从左到右一次编号的* 0 3 …

开源数据库Sharding技术

从Shard到Sharding "Shard" 这个词英文的意思是"碎片"&#xff0c;而作为数据库相关的技术用语&#xff0c;似乎最早见于大型多人在线角色扮演游戏(MMORPG)中。"Sharding" 姑且称之为"分片"。 Sharding 不是一门新技术&#xff0c;而是…

Chapter 5 OpenStack镜像服务(Image service)

Chapter 5 镜像服务(Image service)5.1 镜像服务的概念OpenStack镜像服务能够使用户发现、注册(导入)、查询虚拟机镜像。它通过REST API来查询虚拟机镜像的元数据从而获取镜像文件。这里镜像服务安装在控制节点上&#xff0c;默认存储镜像的路径为/var/lib/glance/p_w_picpaths…

(31)23种设计模式研究之二【观察者模式】

观察者模式&#xff1a; 观察者模式&#xff08;有时又被称为发布&#xff08;publish &#xff09;-订阅&#xff08;Subscribe&#xff09;模式、模型-视图&#xff08;View&#xff09;模式、源-收听者(Listener)模式或从属者模式&#xff09;是软件设计模式的一种。在此种模…

数据采集之采集引擎学习路线

什么是插件式监控平台 为什么使用插件式监控平台 插件式监控平台的构成与工作原理 插件式监控平台的环境配置 采集器下载和部署配置步骤 采集器和插件的代码说明 如何开发新的插件 常见问题及解决方法 如何添加插件 如何创建采集器 如何关联监控项目 如何控制采集器…

简单枚举

1.除法 输入正整数n&#xff0c;按从小到大的顺序输出所有形如abcde/fghijn的表达式&#xff0c;a&#xff5e;j恰好为数字0&#xff5e;9的一个排列 &#xff0c;2< n < 79. #include<cstdio> #include<cstring> int vis[10], a[10], n; void dfs(int x) {…