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函数。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容