目前在看 nginx 源码,发现 master 在派生 worker 进程之前,把一大推信号给屏蔽了,我测试发现 worker 可以正常接收到信号例如 SIGINT SIGTERM 等信号,有哪位大佬知道么
![]() | 1 LoliconInside 2018-03-25 20:28:05 +08:00 via Android 所以你想表达什么? |
2 YYYYYYyyyyyy OP 子进程不是会继承父进程的信号屏蔽字吗,既然再派生 worker 进程之前把一大推信号给屏蔽了,worker 进程再派生之后理论上不是不会接收到 SIGINT SIGTERM 等信号? |
3 YYYYYYyyyyyy OP @LoliconInside 子进程不是会继承父进程的信号屏蔽字吗,既然再派生 worker 进程之前把一大推信号给屏蔽了,worker 进程再派生之后理论上不是不会接收到 SIGINT SIGTERM 等信号? |
4 YYYYYYyyyyyy OP ngx_worker_process_init 函数中 woker 进程会对继承而来的信号屏蔽字重新初始化: sigemptyset(&set); sigprocmask(SIG_SETMASK, &set, NULL) 所以 worker 可以正常接收到信号例如 SIGINT SIGTERM 等信号 |