libevent如何检测套接字是否已关闭

时间:2013-05-22 22:52:30

标签: sockets network-programming libevent

如果我将特定套接字的事件添加到事件循环, 例如,TCP连接套接字。 然后可能会发生套接字关闭, 然后将如何解放行为? 能发现吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

编辑:我想我最初误解了你的问题。

如果您的意思是套接字从远端关闭

根据文档,您可以使用event_new()event_add()调用来注册套接字。请确保指定EV_READ,因为您对套接字关闭时感兴趣。

请记住,可用于读取的数据与已关闭的套接字之间的文件描述符准备情况没有区别。通常,您必须读取套接字以找出哪个条件为真,但如果您不想读取套接字,则可以查看here以获取提示。

如果您的意思是套接字是本地关闭的(文件描述符已关闭

永远不会定义文件描述符在关闭后使用,并且总是会导致未定义的结果。这不是针对libevent的。在关闭文件描述符之前,必须确保程序中没有其他线程正在使用它,并且必须确保程序的其他任何部分将来都不会尝试使用它。这意味着在关闭文件描述符的同时取消注册文件描述符。