libev关于ev_default_fork的标志



我正在学习libev。但是我不理解ev_loopev_default_fork标志。这是一个接近执行官的问题吗?像FD_CLOEXEC fcntl()标志一样?我什么时候需要立国旗?在哪种情况下,此标志是必要的?这是对文档的描述:

此函数将导致后续ev_loop迭代的标志设置为为具有内核状态的后端重新初始化内核状态。即使泰南,你可以随时打电话给他,但在那之后就很有意义了分叉,在子进程中(或子进程和父进程,但再次毫无意义)。在使用任何libev函数,它只会在下一个ev_loop时生效迭代。

另一方面,您只需要在childprocess如果并且仅当您希望在小孩如果你只是fork+exec,你根本不需要调用它。

函数本身速度很快,通常callit只是在一个fork之后以防万一。为了简化这一点,函数将将inquite很好地放入对pthread_atfork的调用中:pthread-atfork(0,0,ev_default_fork);

只要阅读文档,您就可以在fork()之后调用子函数,最好是您要做的第一件事。因此,您的代码应该看起来像:

switch (fork()) {
case -1:
    /* everything's gone pear-shaped */
default:
    /* i am the parent */
    ...
    break;
case 0:
    /* i am the child */
    ev_loop_fork(EV_DEFAULT);
    ...
    break;
}

相关内容

  • 没有找到相关文章

最新更新