我在学习libev
。但我不ev_default_fork
明白ev_loop
. 这是关闭执行的问题吗?喜欢FD_CLOEXEC fcntl()
国旗吗?什么时候需要设置标志?什么情况下需要这个标志?这是对文档的描述:
此函数设置一个标志,导致后续 ev_loop 迭代重新初始化具有内核状态的后端的内核状态。尽管有这个名字,你可以随时调用它,但是在分叉之后,在子进程(或子进程和父进程,但这又没有意义)中最有意义。在使用任何 libev 函数之前,您必须在子进程中调用它,并且它只会在下一次 ev_loop 迭代时生效。
另一方面,当且仅当您想在子进程中使用事件库时,您才需要在子进程中调用此函数。如果你只是 fork+exec,你根本不需要调用它。
该函数本身非常快,并且在分叉后调用它通常不是问题。为了简单起见,该函数将非常适合调用 pthread_atfork: pthread_atfork (0, 0, ev_default_fork);