epoll_create和epoll_create1

2023-11-12

 

名字

       epoll_create epoll_create1 - 创建epoll文件描述符

 

摘要

       #include <sys/epoll.h>
       int epoll_create(int size);       

       int epoll_create1(int flags);

 

描述

       epoll_create()

       创建一个新的epoll实例。从Linux 2.6.8开始,size参数被忽略,但必须大于零; 看下面的注意事项。

 

        epoll_create()

        返回一个指向新创建的epoll实例的文件描述符。 这个文件描述符用于所有后续调用epoll的所有接口。 当不再需要文件描述符             时,使用close关闭。 当所有指向这个epoll实例的文件描述符都关闭时,内核销毁实例并释放关联的重用资源。

 

      epoll_create1()

     如果flags为0,epoll_create1()和删除了过时size参数的epoll_create()相同。
    如果flags中包含以下值就有不同的表现:
    EPOLL_CLOEXEC
    在文件描述符上面设置执行时关闭(FD_CLOEXEC)标志描述符。
    具体请参考open中对O_CLOEXEC标志的描述。

 

返回值

    成功时,返回一个非负文件描述符。
    发生错误时,返回-1,并且将errno设置为指示错误

 

errno错误

    EINVAL  size不是正数。
    EINVAL  在epoll_create1()的flags标志中包含无效值。
    EMFILE  达到了用户对epoll设置的最大实例数限制,在/proc/sys/fs/epoll/max_user_instances具体查看
    EMFILE  达到了进程中文件描述符的最大限制
    ENFILE  达到了系统范围内对打开文件总数的限制
    ENOMEM  没有足够的内存来创建内核对象。

 

版本
    epoll_create()在2.6版中添加到内核中。glibc库从版本2.3.2开始提供了支持。
    epoll_create1()在2.6.27版中添加到内核中。glibc库从2.9版开始提供了支持

标准参考
    epoll_create()是Linux独有的
   
注意事项
最初epoll_create()的参数size告诉内核添加到epoll实例的文件描述符个数,内核根据这个参数分配最初的描述事件结构体的空间,(如果有必要,内核会分配超过size的空间)
现在size不再需要了(内核动态的分配描述事件需要的空间),但是size必须要设置大于0的值,是为了新的应用能运行在旧的内核上。

如有侵权请告知,将撤回,作为自己学习用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

epoll_create和epoll_create1 的相关文章

随机推荐

  • arcsde安装步骤_ArcGIS 9.3 安装之 SDE的安装及使用

    由于ArcSDE9 3只支持Oracle 11gR1 32位版本 所以要在安装ArcSDE的电脑上安装一个32位版本的Oracle 11gR1客户端 1 安装SDE程序 并进行注册 1 选择注册机KeyGen exe 点击server标签
  • Vue3中父子组件实现数据双向绑定效果

    父组件
  • MarkDown/README.md文件添加图片

    README md文件添加图片 用MarkDown格式的文档编辑时 需要上传图片 比如往gitHub上的README md中添加一张展示效果图 alt text path to img jpg Title 其中 path to img jp
  • 树莓派设置静态IP记录(整理)

    另外 树莓派直连电脑 设置静态ip 可参考 http blog csdn net liang890319 article details 8639128 树莓派默认使用的是dhcp自动分配ip 而且默认打开SSH服务 当没有显示器的时候 我
  • 面试官:Spring refresh过程是怎样的?

    小熊学Java网站 https javaxiaobear gitee io 每周持续更新干货 建议收藏 1 Spring refresh 流程 refresh 是 AbstractApplicationContext 中的核心方法 负责初始
  • 多模态学习-基于文本和图像信息的商品分类框架

    将文本model和图像model合并为一个model 因为它们包含了互补的信息 对于图像和文本数据 都是用CNN 对图像数据 使用已经在Image Net上训练过的网络 该网络已经具有为自然图像提取丰富特征的能力 利用预先训练的机器学习模型
  • uni-app自定义tabbar

    uni app自定义tabbar 为什么要自定义tabbar呢 虽然说直接在page json里面直接配置性能可能更好点 但是有时候满足不了我们的需求 比如说 需要鉴权的时候 我们就需要通过不同的用户显示不同的底部 首先page json里
  • libevent(7)libevent中的事件event

    一 事件状态 libevent有4种事件状态 分别是 initialized pending active persistent 这4种状态的转换关系如下 1 已初始化 initialized 对应图中的non pending状态 表示事件
  • 【Java异常】Error:java: Compilation failed: internal java compiler error 的解决方案

    一 错误描述 刚刚通过IDEA导入一个新的项目之后 运行报错 如下所示 Error java Compilation failed internal java compiler error 二 错误原因 出现这个错误的原因主要是因为 JDK
  • python 计算cpu占用率

    首先pip install psutil 或者 easy install psutil import psutil import os datetime time def getMemCpu data psutil virtual memo
  • Server 层及整个MySQL体系图

    Server 层及整个MySQL体系图 InnoDB 存储引擎层体系结构图 学习mysql innodb体系结构 这个图不错 再结合innodb存储引擎 效果更佳
  • Visual Studio容器工具要求在构建,调试或运行容器化项目之前运行Docker

    出现此提示 是因为电脑未安装Docker所致 接下来就教大家如何安装Docker 第一步 下载 地址 Install Docker Desktop on Windows Docker Documentation 第二步 安装 1 双击Doc
  • Unity InputSystem学习笔记(一)获取设备按键信息

    键盘 每帧判断 void Update if Keyboard current spaceKey wasPressedThisFrame print 空格键 if Keyboard current dKey wasReleasedThisF
  • qt中添加界面元素后,运行时看不到该界面元素

    问题 在一个qt工程的界面上添加了一个按钮 发现如下问题 这个按钮在代码里无法正确识别 IDE的智能提示里找不到 运行程序后 界面上也看不到该按钮 原因 在工程目录下和编译目录下同时出现ui mainwindow h文件 发生冲突 解决办法
  • React从入门到实战- 企业级实战项目-宜居一

    2019年最新 React从入门到实战 带 React 企业级实战项目 宜居 React基础知识 React基础知识 1 React 学习前期准备 React 学习前期准备 React 学习前期准备 react环境 工程化 webpack安
  • javascript跳转到新页面的三种方法

    1 a标签 a标签 a href http www jb51 net title 脚本之家 Welcome a a href 上一个页面 就是前一个页面 a href 下一个页面 就是后一个页面 a href http www jb51 n
  • 虚拟DOM详细说明

    一 什么是虚拟DOM 虚拟DOM是对真实DOM的抽象 虚拟DOM树是根据真实的DOM树模仿出来的 两者都是节点相同的同一种树形数据结构 一个应用页面一般是由多个元素节点组合嵌套构成的基本骨架 其中某一个节点变化改变都可能会导致连锁反应 如果
  • Android完全退出应用程序 ,太爽了

    return instance 退出栈顶Activity public void popActivity Activity activity if activity null 在从自定义集合中取出当前Activity时 也进行了Activi
  • 多线程测试(一)

    编写一个ThreadTest类 分别通过继承Thread类和实现Runnable接口 两种方式实现两个线程 两个线程执行的任务是实现同一个变量 count 的累加操作 count从1增加到10 每增加1 在控制台输出 执行累加操作的线程的线
  • epoll_create和epoll_create1

    名字 epoll create epoll create1 创建epoll文件描述符 摘要 include