我知道/sbin/initSIGKILL
出于明显的SIGSTOP
原因对内核有特殊的保护。
我已经尝试告诉内核我想要接收SIGSTOP
(ioctl()
类似于main() 中的SIGABRT
和SIGSEGV
reqs):
if (ioctl (0, KDSIGACCEPT, SIGSTOP) == 0) {
nih_signal_set_handler (SIGSTOP, stop_handler);
但SIGSTOP
没有到达stop_handler()
(据我所知,因为nih_error()
没有打印在日志中)。
在stop_handler()
中,我将SIGSTOP
信号处理程序重置为SIG_DFL
(否则它无论如何都会返回到我们的处理程序),但这可能会导致它再次被内核忽略。
我如何告诉内核我想让 init 停止?