nginx中的信号通信机制

SIGCHLD:当子进程挂掉的时候,父进程会收到子进程的SIGCHLD信号。worker进程是master进程的子进程,所以当worker进程挂掉的时候,master进程会马上把它拉起来。我们来看看具体代码实现。
当子进程挂掉,父进程收到SIGCHLD信号

            case SIGCHLD:
            ngx_reap = 1;
            break;

然后在ngx_master_process_cycle中处理

        if (ngx_reap) {
            ngx_reap = 0;
            ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "reap children");

            live = ngx_reap_children(cycle);
        }

其中信号的注册和回调分别在ngx_process.c中的ngx_init_signals和
ngx_signal_handler函数。

你可能感兴趣的:(nginx中的信号通信机制)