如果我将特定套接字的事件添加到事件循环,例如 TCP 连接套接字。那么可能会发生socket关闭的情况,那么libevent会怎么做呢?它可以检测到这个吗?
谢谢!
如果我将特定套接字的事件添加到事件循环,例如 TCP 连接套接字。那么可能会发生socket关闭的情况,那么libevent会怎么做呢?它可以检测到这个吗?
谢谢!
编辑:我想我起初误解了你的问题。
根据文档,您可以使用event_new()
andevent_add()
调用来注册对套接字的兴趣。确保您指定EV_READ
,因为您对套接字何时关闭感兴趣。
请记住,可供读取的数据和关闭的套接字之间的文件描述符准备情况没有区别。通常您必须阅读套接字以找出哪个条件为真,但如果您不想阅读套接字,则可以在此处查找提示。
在关闭文件描述符后使用它永远不会被定义,并且总是会导致未定义的结果。这不是特定于 libevent。在关闭文件描述符之前,您必须确保程序中没有其他线程正在使用它,并且您必须确保程序的其他部分将来不会尝试使用它。这意味着在您关闭它的同时从 libevent 注销文件描述符。