【发布时间】:2020-11-03 11:13:20
【问题描述】:
我现在正在使用 libevent 开发一个服务器应用程序。
服务器有时需要执行一些外部命令(即fork() 然后exec())。我担心的是,在fork() 之后,父母和孩子可能都在有效地听,孩子可能有机会在exec()s 之前“接受”一个新的传入连接,这可能会导致父母(服务器应用程序)丢失传入的请求。
我需要在fork() 之前evconnlistener_disable() 和evconnlistener_enable() 在fork() 之后吗?
【问题讨论】:
-
libevent 如何监听?它使用单独的线程吗?它是否有一个事件循环函数,你必须调用它来处理事件?
-
哦,你提醒我了。我以经典方式使用 libevent,即单线程,所有回调都来自事件循环。所以我不需要担心这一点,libevent 不会“接受”某些事情,直到控制流回到事件循环。 :)