SIGKILL信号处理

如果一个linux进程正在等待I / O(即处于SLEEP状态)并发出一个SIGKILL信号,那么在终止( STOPPED状态)时,它将通过RUNNING还是READY状态?

换句话说,对于一个处理系统中断的进程,如SIGKILL生成的进程,是否需要通过RUNNINGREADY状态?

在正常情况下,一个进程可以处理来自内核的中断,并且知道SIGKILL有一个相当矛盾的目的,就是杀死一个没有响应的信号,但是我怀疑有多less进程被控制,如果有的话。

Solutions Collecting From Web of "SIGKILL信号处理"

信号被内核“切换”到一个进程,所以从processA向processB发送一个信号使用内核。 当SIGKILL交付时,内核不允许进程(用户模式)进行任何活动,特别是进程失败:atexit调用,_exit。 没有。 这个过程简单地被系统破坏。 这涉及到内核模式下的一些活动。 缓冲的数据丢失。 SYSV信号量和其他内核持久内存对象留在内存中。 这可能是一个真正的混乱。

如果内核内存中的内容导致挂起,请使用linux中的sysrq接口:

http://tldp.org/HOWTO/Remote-Serial-Console-HOWTO/security-sysrq.html

– 执行任何你可以得到的命令关机的表象。

这就是为什么使用SIGKILL是绝对的最后的手段,因为你不知道你在破坏什么。 它不会修复所有挂起。

你到底在干什么?

除了吉姆·麦克纳马拉的回答:

SIGKILL(kill -9)不能被处理。

有关更多信息,请参阅https://stackoverflow.com/a/2541618/1456519上的答案。