这样进行守护的目的是什么?

|
ngx_int_t ngx_daemon(ngx_log_t *log)
{
    int  fd;

    switch (fork()) {
    case -1:
        ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, \"fork() failed\");
        return NGX_ERROR;

    case 0:
        break;

    default:
        exit(0);
    }
对我来说似乎毫无意义,因为它只会改变pid,没有其他改变。 有什么好处?     
已邀请:
        该过程与终端分离,因此当启动它的用户退出其会话时,该过程将继续运行。 守护进程不仅与fork有关,还涉及在子进程中调用
setsid(2)
,该子进程将进程与控制终端分离。如果运行
ps
,则可以在tty列中看到标有ѭ3marked的进程。 另外,启动守护程序时,它将在分叉后立即将控制权返回给外壳程序,而不是外壳程序必须等待进程终止。     
        这是断开父子链接。等待孩子的父母将停止等待,因为孩子将生成守护程序,然后退出。     
        该流程也成为“流程组负责人”。请参阅此SO答案,其中包含更多详细信息: 在Ruby中使用双叉创建守护程序     

要回复问题请先登录注册