关于将信号 9(SIGKILL)发送到初始化进程(PID 1),我遇到了一个奇怪的问题。您可能知道,不能通过信号处理程序忽略 SIGKILL。当我尝试向 init 发送 SIGKILL 时,我注意到什么也没发生;init 不会被终止。为了弄清楚这种行为,我决定用 strace 将自己附加到 init 进程中,以便更清楚地看到发生了什么。现在是奇怪的部分。如果我用 strace “查看” init 进程并将其发送 SIGKILL,系统就会崩溃。
我的问题是为什么会这样?为什么我查看进程时系统会崩溃,而我不查看时为什么系统不会崩溃?正如我所说,在这两种情况下,我都会向 init 发送 SIGKILL。在 CentOS 6.5、Debian 7 和 Arch 上测试。
谢谢!