epoll事件总结

可以使用 “ man epoll_ctl” 来查看函数手册。

1、EPOLLIN

  • 有新的连接请求,触发 EPOLLIN;
  • 读取(接收)对端发送的数据,触发 EPOLLIN;
  • 对端正常关闭(程序里 close(),shell 下 kill 或 ctl+c),触发 EPOLLIN(使用2.6.17之前版本内核的系统中)或者触发 EPOLLIN | EPOLLRDHUP(使用2.6.17之后版本内核的系统中);
  • 对端异常断开连接(比如拔网线),没触发任何事件;

2、EPOLLOUT

  • 写数据,触发 EPOLLOUT;

3、EPOLLPRI

  • 读取的数据中有带外数据,只触发 EPOLLPRI,不触发 EPOLLIN;

4、EPOLLERR

  • 关联文件描述符发生错误,会触发 EPOLLERR;
  • 当管道的读端已关闭时,也会触发 EPOLLERR;
  • 没有必要在事件中设置它;

5、EPOLLHUP

  • 读写都关闭时,触发 EPOLLSHUP;

6、EPOLLET

  • 为关联的文件描述符设置边缘触发行为,不设置的话,epoll 默认为水平触发;

7、EPOLLONESHOT

  • 设置关联文件描述符的一次性行为,即一个 socket 只能同时被一个线程(进程)操作时,将事件设置为 EPOLLONESHOT;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值