当前位置: 首页 > ds >正文

epoll函数

头文件

#include <sys/epoll.h>

epoll_create函数 

        该函数用于创建一个 epoll 实例,返回一个文件描述符,后续的 epoll 操作会使用这个文件描述符。

函数原型

int epoll_create(int flags);

参数

        flags:可以传入 0 或者 EPOLL_CLOEXEC。当传入 EPOLL_CLOEXEC 时,在执行 exec 系列函数时会自动关闭该文件描述符,防止子进程继承。若传入 0,则无此特性。

返回值

        成功时返回一个新的 epoll 实例的文件描述符。

        失败时返回 -1,并设置 errno 来指示错误类型。

epoll_ctl函数

        对 epoll 实例进行控制操作,比如添加、修改或删除要监控的文件描述符及其对应的事件。

函数原型

int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);

参数

        epfdepoll_create1返回的 epoll 实例的文件描述符。

        op:指定操作类型,有以下三种取值:

                EPOLL_CTL_ADD:将文件描述符 fd 加入到 epoll 实例的监控列表中。

                EPOLL_CTL_MOD:修改已经在 epoll 实例监控列表中的文件描述符 fd 对应的事件。

                EPOLL_CTL_DEL:将文件描述符 fd 从 epoll 实例的监控列表中移除。

        fd:要进行操作的文件描述符。

        event:指向 struct epoll_event 结构体的指针,用于指定要监控的事件类型。struct epoll_event 的定义如下:

typedef union epoll_data 
{void        *ptr;int          fd;uint32_t     u32;uint64_t     u64;
} epoll_data_t;struct epoll_event 
{uint32_t     events;      /* Epoll events */epoll_data_t data;        /* User data variable */
};

        events 可以是以下一些常用事件标志的组合:

                EPOLLIN:表示对应的文件描述符可读(有数据可读)。

                EPOLLOUT:表示对应的文件描述符可写(可以写入数据)。

                EPOLLET:将 epoll 设置为边缘触发(Edge Triggered)模式,默认是水平触发(Level Triggered)模式。 

        data 是一个联合体,通常会使用 fd 成员来存储要监控的文件描述符。

返回值

        成功时返回 0

        失败时返回 -1,并设置 errno 来指示错误类型。

epoll_wait函数

         等待 epoll 实例中监控的文件描述符上的事件发生。当有事件发生时,该函数会返回发生事件的文件描述符数量,并将这些事件的信息存储在 events 数组中。    

函数原型

int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);

参数

        epfdepoll_create1 返回的 epoll 实例的文件描述符。

        events:用于存储发生事件的 struct epoll_event 结构体数组。

        maxeventsevents 数组的最大元素个数,即最多能存储的事件数量。

        timeout:超时时间,单位为毫秒。有以下几种取值情况:

                -1:表示无限等待,直到有事件发生。

                0:表示立即返回,不管是否有事件发生。

                大于 0:表示等待指定的毫秒数,如果在这段时间内没有事件发生,则返回 0

返回值

        成功时返回发生事件的文件描述符数量。

        超时且无事件发生时返回 0

        失败时返回 -1,并设置 errno 来指示错误类型。

http://www.xdnf.cn/news/3540.html

相关文章:

  • Perforated Backpropagation:神经网络优化的创新技术及PyTorch使用指南
  • TensorFlow深度学习实战——基于循环神经网络的情感分析模型
  • 多模态大语言模型arxiv论文略读(五十二)
  • LangChain4j +DeepSeek大模型应用开发——6 提示词
  • Nginx 核心功能02
  • 小米首个推理大模型开源——Xiaomi MiMo,为推理而战!
  • 体系学习1:C语言与指针1——预定义、进制打印、传参为数组
  • python多进程的使用
  • 机器视觉开发-摄像头扫描二维码
  • 2025五一数学建模C题完整分析论文(共36页)(含模型、可运行代码、数据)
  • 嵌入式产品运行中数据丢失怎么办?
  • SpringBoot云端日记本系统开发实现
  • 记录搭建自己的应用中心-需求看板搭建
  • DeepSeek V3 训练策略:FP8混合精度与多Token预测
  • 电子病历高质量语料库构建方法与架构项目(环境聆听与自动化文档生成篇)
  • AD数据库清理
  • Mem0.ai研究团队开发的全新记忆架构系统“Mem0”正式发布
  • TTL、LRU、LFU英文全称及释义
  • 脑机接口技术:开启人类与机器的全新交互时代
  • LabVIEW异步调用VI介绍
  • 【2025年五一数学建模竞赛】A题 解题思路与模型代码
  • 【Unity】MVP框架的使用例子
  • 使用 MCP(模型上下文协议)和 Claude 在 Node.js 中构建聊天应用程序
  • 海量数据存储与分析:HBase vs ClickHouse vs Doris 三大数据库优劣对比指南
  • 理解计算机系统_网络编程(6)_web服务器
  • PDF本地化开源项目推荐
  • AI Agent(2):Agent技术架构
  • terraform output输出实战
  • JVM——Java 虚拟机是如何加载 Java 类的?
  • 【AI提示词】成本效益分析师