您将如何停止忽略所有信号的应用程序?
How would you stop an application that is ignoring all signals?
我知道在大多数情况下,不可能忽略所有信号。如果应用程序可以忽略所有信号,您将如何停止它?由于您无法使用 SIGKILL 或 SIGSTOP...甚至不确定这个问题是否有意义...
SIGKILL 将在没有任何发言权的情况下结束进程。
当 SIGKILL 被发送到进程时,内核不会将信号中继到进程并调用它指定的信号处理程序。相反,内核会立即停止并销毁该进程。
因此,SIGKILL 将始终有效。该过程无法阻止它。它不会有任何时间执行任何代码或进行任何清理。这就是为什么您通常会先尝试发送一个 SIGTERM 以请求进程自行结束,然后仅当进程不接受 SIGTERM 请求时才在一段时间后发送一个 SIGKILL。
对于 SIGSTOP,情况类似。
我知道在大多数情况下,不可能忽略所有信号。如果应用程序可以忽略所有信号,您将如何停止它?由于您无法使用 SIGKILL 或 SIGSTOP...甚至不确定这个问题是否有意义...
SIGKILL 将在没有任何发言权的情况下结束进程。
当 SIGKILL 被发送到进程时,内核不会将信号中继到进程并调用它指定的信号处理程序。相反,内核会立即停止并销毁该进程。
因此,SIGKILL 将始终有效。该过程无法阻止它。它不会有任何时间执行任何代码或进行任何清理。这就是为什么您通常会先尝试发送一个 SIGTERM 以请求进程自行结束,然后仅当进程不接受 SIGTERM 请求时才在一段时间后发送一个 SIGKILL。
对于 SIGSTOP,情况类似。