我最近意识到该kill
实用程序可以发送我想要的任何信号,因此当我需要SIGKILL
一个进程时(当它挂起或其他东西时),我发送 aSIGSEGV
而不是为了有点笑(kill -11
而不是kill -9
。)
但是,我不知道这是否是不好的做法。那么,kill -11
比 更危险吗kill -9
?如果是这样,怎么办?
答案1
该SIGSEGV
信号由内核发送到进行了无效虚拟内存引用(分段错误)的进程。
发送 aSIGSEGV
可能更“危险”的一种方法是,如果您从空间不足的文件系统中终止进程。进程收到 a 时的默认操作SIGSEGV
是将核心转储到文件然后终止。核心文件可能非常大,具体取决于进程,并且可能会填满文件系统。
正如@Janka 已经提到的,您可以编写代码来告诉程序您希望它如何处理信号SIGSEGV
。您不能捕获 aSIGKILL
或 a SIGSTOP
。我建议当您只想终止进程时使用 a 或SIGKILL
a 。使用 a通常不会产生不良后果,但您想要终止的进程可能会以您意想不到的方式处理 a 。SIGSTOP
SIGSEGV
SIGSEGV
答案2
SIGSEGV 可以被接收程序捕获,然后可以执行程序想要的任何操作。
SIGKILL 和 SIGSTOP 是程序无法捕获或忽略的唯一信号。