SIGKILL
在POSIX兼容的平台上,SIGKILL是发送给一个进程来导致它立即终止的信号。SIGKILL的符号常量在头文件signal.h
中定义。因为在不同平台上,信号数字可能变化,因此符号信号名被使用,然而在大量主要的系统上,SIGKILL是信号#9。[1]
描述 | “杀死”信号 |
---|---|
默认动作 | 进程异常终止 |
SA_SIGINFO宏 | |
无
|
语源
使用
当SIGKILL被发送给一个程序时,它使程序立即终止。与SIGTERM和SIGINT相比,这个信号不能被捕获或忽略,同时接收这个信号的进程在收到这个信号时不能执行任何清理。
- 僵尸进程不能被杀死,因为它们已经死亡,只等待它们的父进程回收它们。
- 处于阻塞状态的进程不会死亡,直到它们再次醒来。
- init进程是特殊的:它不获得它不想处理的信号,因此它可以忽略SIGKILL。
- 因为SIGKILL不给进程任何在终止时做清理操作的机会,在大部分系统关闭过程中,在采取SIGKILL之前,使用信号SIGTERM使进程终止的尝试先被作出。
- 为了加速电脑关闭过程,Mac OS X 10.6会将SIGKILL发送给已经标记它们自己为“干净”的应用程式,以加快关机速度,同时,很可能地,没有坏作用。[2]
- 即使SIGKILL被发送给它,一个正在不可中断睡眠的进程也可能不会终止(并且释放它的资源)。这是少数几个一个UNIX系统可能需要被重新启动来解决临时软件问题的例子中的一个。
参考
- ^ sourceware.org Git - glibc.git/blob - bits/signum.h. 2001-07-06 [2009-11-18].[永久失效链接]
- ^ Mac Dev Center: What's New in Mac OS X: Mac OS X v10.6. 2009-08-28 [2009-11-18]. (原始内容存档于2009-12-08).