POSIX兼容的平台上,SIGKILL是发送给一个进程来导致它立即终止的信号。SIGKILL的符号常量头文件signal.h中定义。因为在不同平台上,信号数字可能变化,因此符号信号名被使用,然而在大量主要的系统上,SIGKILL是信号#9。[1]

SIGKILL
描述“杀死”信号
默认动作进程异常终止
SA_SIGINFO宏

语源

SIG是信号名的通用前缀KILL是指让一个进程立即终止的动作的计算机行话

使用

当SIGKILL被发送给一个程序时,它使程序立即终止。与SIGTERMSIGINT相比,这个信号不能被捕获或忽略,同时接收这个信号的进程在收到这个信号时不能执行任何清理。

  • 僵尸进程不能被杀死,因为它们已经死亡,只等待它们的父进程回收它们。
  • 处于阻塞状态的进程不会死亡,直到它们再次醒来。
  • init进程是特殊的:它不获得它不想处理的信号,因此它可以忽略SIGKILL。
  • 因为SIGKILL不给进程任何在终止时做清理操作的机会,在大部分系统关闭过程中,在采取SIGKILL之前,使用信号SIGTERM使进程终止的尝试先被作出。
  • 为了加速计算机关闭过程,Mac OS X 10.6会将SIGKILL发送给已经标记它们自己为“干净”的应用程序,以加快关机速度,同时,很可能地,没有坏作用。[2]
  • 即使SIGKILL被发送给它,一个正在不可中断睡眠英语Uninterruptible sleep的进程也可能不会终止(并且释放它的资源)。这是少数几个一个UNIX系统可能需要被重新启动来解决临时软件问题的例子中的一个。

参考

  1. ^ sourceware.org Git - glibc.git/blob - bits/signum.h. 2001-07-06 [2009-11-18]. [永久失效链接]
  2. ^ Mac Dev Center: What's New in Mac OS X: Mac OS X v10.6. 2009-08-28 [2009-11-18]. (原始内容存档于2009-12-08).