gpt4 book ai didi

c - 为什么我在全新的套接字上收到 EPOLLHUP 事件

转载 作者:太空狗 更新时间:2023-10-29 11:05:03 26 4
gpt4 key购买 nike

我有一些代码在虚拟机上运行时由于某种原因出现异常。

初始化的顺序是:

s_listen = socket(...)
bind(s_listen, ...)
epoll_ctl(epfd, EPOLL_CTL_ADD, s_listen, ...)
listen(s_listen, SOMAXCONN)

在调用 bind 之前,epoll 文件描述符上有一个事件循环/线程运行和处理事件。

该事件循环在调用新创建的 s_listen 套接字上的 listen() 之前获得 EPOLLHUP。

所以我的问题是,为什么我会在全新的套接字上收到 EPOLLHUP 事件?

当我在调用 listen() 之后放置 epoll_ctl 时,错误消失了,但是如果它们在套接字添加到 epoll 之前进入,是否会导致错过一些潜在的连接事件?

最佳答案

正如我在评论中的示例所示,似乎您无法在套接字正确初始化之前对其进行轮询,除非您想处理 EPOLLHUP

至于问题,不,你不会错过任何事件。调用 listen() 然后调用 epoll() 与您在其他情况下必须执行的操作相同(listen() + 阻塞 accept( ));这些调用之间的实际传入连接由内核处理并等待直到您的代码处理它们。

关于c - 为什么我在全新的套接字上收到 EPOLLHUP 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14765203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com