SIGKILL

科技工作者之家 2020-11-17

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

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

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

僵尸进程不能被杀死,因为它们已经死亡,只等待它们的父进程回收它们。

处于阻塞状态的进程不会死亡,直到它们再次醒来。

init进程是特殊的:它不获得它不想处理的信号,因此它可以忽略SIGKILL。

因为SIGKILL不给进程任何在终止时做清理操作的机会,在大部分系统关闭过程中,在采取SIGKILL之前,使用信号SIGTERM使进程终止的尝试先被作出。

为了加速计算机关闭过程,Mac OS X 10.62,也称为雪豹,会将SIGKILL发送给已经标记它们自己为“干净”的应用程序,以加快关机速度,同时,很可能地,没有坏作用。

即使SIGKILL被发送给它,一个正在不可中断睡眠的进程也可能不会终止(并且释放它的资源)。这是少数几个一个UNIX系统可能需要被重新启动来解决临时软件问题的例子中的一个。

本词条内容贡献者为:

李航 - 副教授 - 西南大学

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。