objs/nginx -h
-s signal : send signal to a master process: stop, quit, reopen, reload
nginx 支持 stop ,quit , reopen ,reload 四种信号
一 信号定义
二 信号初始化和添加
在os/unix/ngx_processs.c中
系统首先定义了所有的信号量
在ngx_init_signal函数中,添加信号量
三 信号量的处理。
我们看到上面定义的信号量都是使用同一个处理的函数: ngx_signal_handler, 在这个函数中,会根据进程的类型和信号量,设置变量:比如收到show_down 的信号的时候,把 ngx_quit = 1 ;而进程在看到这个变量是1的时候,就采取相应的操作。
四 信号的发送
信号的发送需要一个新的进程来完成,主要下面三个步骤:
1 解析参数,得到需要发送信号的名称
2 打开工作进程的文件,读取进程的id
3 遍历注册的信号量,根据信号的名称,得到对应的信号id, 利用kill函数,向进程发送信号。