Loading

POLLRDHUP和EPOLLRDHUP事件的坑

版权声明:本文为CSDN博主「城南花已开.jpg」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39781096/article/details/106980232

这两个事件其实是一个东西,分别对应poll和epoll,通常用来判断对端是否关闭,但是当你对某个socket注册POLLIN和POLLRDHUP(EPOLLIN和EPOLLRDHUP)时,在对端关闭时,对于poll来说会一直触发POLLIN + POLLRDHUP事件,epoll也会触发EPOLLIN + EPOLLRDHUP事件,是否一直触发要看epoll是工作在LT模式下还是ET模式下。

所以,当我们使用POLLRDHUP(EPOLLRDHUP)事件来判断对端是否关闭时,POLLRDHUP(EPOLLRDHUP)事件的处理应放在POLLIN(EPOLLIN)事件的前面,避免将对端关闭当做一次读事件,而无法处理POLLRDHUP(EPOLLRDHUP)事件。

posted @ 2021-03-16 21:07  modao  阅读(835)  评论(0编辑  收藏  举报