linux – 如何处理EPOLLERR和EPOLLHUP?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 如何处理EPOLLERR和EPOLLHUP?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1146字,纯文字阅读大概需要2分钟。
内容图文
![linux – 如何处理EPOLLERR和EPOLLHUP?](/upload/InfoBanner/zyjiaocheng/966/75c2205dc7764a848f611d3b6348002e.jpg)
我在libevent epoll中阅读了代码,这里是代码:
if (what & (EPOLLHUP|EPOLLERR)) {
ev = EV_READ | EV_WRITE;
} else {
if (what & EPOLLIN)
ev |= EV_READ;
if (what & EPOLLOUT)
ev |= EV_WRITE;
if (what & EPOLLRDHUP)
ev |= EV_CLOSED;
}
据我所知,当EPOLLERR或EPOLLHUP发生时,应该关闭连接.但是在上面的代码中,当EPOLLHUP | EPOLLERR遇到时,事件掩码被设置为EV_READ | EV_WRITE.所以我的问题是:
>是什么让EPOLLERR和EPOLLHUP发生?
>当EPOLLERR和EPOLLHUP发生时,程序应该在事件处理函数中做什么?请详细解释其背后的原因.
提前致谢!
解决方法:
What makes EPOLLERR and EPOLLHUP happen?
男人epoll_ctl
EPOLLERR
Error condition happened on the associated file descriptor.
epoll_wait(2) will always wait for this event; it is not
necessary to set it in events.
EPOLLHUP
Hang up happened on the associated file descriptor.
epoll_wait(2) will always wait for this event; it is not
necessary to set it in events.
When EPOLLERR and EPOLLHUP happen, what should the program do in the
event handle function?
随着libevent通过事件EV_READ |在这种情况下,EV_WRITE,回调函数调用e. G. recv(),当对等体执行有序关闭(EPOLLHUP)时可能返回0,如果发生错误则返回-1(EPOLLERR);然后程序可能会清理连接,如果它是客户端,可能会重新建立连接.
内容总结
以上是互联网集市为您收集整理的linux – 如何处理EPOLLERR和EPOLLHUP?全部内容,希望文章能够帮你解决linux – 如何处理EPOLLERR和EPOLLHUP?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。