#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

最新文章

  1. 带参数的CLR存储过程
  2. 升级OS X EI Capition 版本导致cocoapods 使用终端上pod: command not found
  3. mac 启动apache + php
  4. PHP &#39;ext/gd/gd.c&#39; gdImageCrop空指针返回拒绝服务漏洞
  5. plsql 的循环之 goto
  6. Java实现Redis持久化到数据库的关键方法
  7. CF 389 E 贪心(第一次遇到这么水的E)
  8. Chrome中java因过期而遭到阻止
  9. SPFA+SLF+LLL优化模板
  10. Pyhon之Django中的Form组件
  11. Leetcode_80_Remove Duplicates from Sorted Array II
  12. UTF-8是现在流行的编码方式,根据规定回答问题
  13. PLSQL安装、PLSQL汉化、激活
  14. VirtualBox下安装Ubuntu Server 16.04
  15. pytorch基础
  16. Action&lt;T&gt; Delegate
  17. 从零搭建 vue-cli 脚手架
  18. django-连接mysql失败
  19. Xml中SelectSingleNode方法,xpath查找某节点用法
  20. mysql时间字段转换为毫秒格式

热门文章

  1. maven install
  2. zeptojs库
  3. Linux 系统管理——磁盘管理及文件系统实例
  4. 利用window.open如何绕过浏览器拦截机制
  5. mysql find_in_set 函数 使用方法
  6. 第06组 Beta冲刺(4/5)
  7. deepnude | 福利
  8. TTA 方法
  9. Android: VIVO手机setSpeakerphoneOn p无效,无法切换speaker的问题
  10. docker nginx安装