EPOLLRDHUP EPOLLHUP 事件

EPOLLRDHUP是从Linux内核2.6.17开始由GNU引入的事件。

对端正常关闭(程序里close(),shell下kill或ctr+c),触发EPOLLIN和EPOLLRDHUP,但是不触发EPOLLERR 和EPOLLHUP。 再man epoll_ctl看下后两个事件的说明,这两个应该是本端(server端)出错才触发的。

EPOLLRDHUP    这个好像有些系统检测不到,可以使用EPOLLIN,read返回0,删除掉事件,关闭close(fd);
如果有EPOLLRDHUP,检测它就可以直到是对方关闭;否则就用上面方法。

EPOLLHUP 表示读写都关闭。本端调用shutdown(SHUT_RDWR)。 不能是close,close 之后,文件描述符已经失效。这个应该是本端(server端)出错才触发的。

监听的skocket只需要EPOLLIN就足够了,EpollErr和EpollHup会自动加上。
监听的socket又不会写,一个EpollIn足矣。

5、对端异常断开连接(只测了拔网线),没触发任何事件。


附man:
EPOLLIN       连接到达;有数据来临;
The associated file is available for read(2) operations.
EPOLLOUT      有数据要写
The associated file is available for write(2) operatio

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值