gpt4 book ai didi

linux - 进程 sighandler 可以处理 linux 信号 SIG_KILL 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:19 25 4
gpt4 key购买 nike

旧方法“信号”和新方法“sigaction”:我们的程序可以安全地处理 SIG_KILL 吗?不同的linux内核版本之间有区别吗?我试图从 2.6.30 升级到更高版本,并且想知道从开发的角度来看,这个 SIG_KILL 可以安全处理吗?

最佳答案

没有。正如 Matteo Piano 指出的那样,我们不应该使用信号处理程序来处理 SIGKILL 。除非我们谈论的是错误版本或其他非标准版本,否则不同内核版本之间在这方面应该没有区别。

来自 man 7 signal 的“标准信号”部分:

The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.

如果有足够的决心,可以下载 Linux 内核源代码并对其进行更改以执行他们喜欢的任何操作。但我不建议允许 SIGKILL 被捕获,如果有人这样做,我也不会称之为“安全”。您可能最终不得不重置硬件以使进程停止。

由于您没有在问题中说明为什么要捕获 SIGKILL,您可能需要考虑使用其他信号,例如 SIGHUPSIGINTSIGQUIT。这些其他信号可能被处理,一些 Unix/Linux 程序就是这样做的。

或者(捕捉 SIGKILL),您可能还需要考虑让一个进程等待以检测目标进程是否退出。例如,父进程可以从退出的子进程中寻找 SIGCHLD 信号,然后有效地导致发生您希望在信号处理程序中执行的相同事件。

关于linux - 进程 sighandler 可以处理 linux 信号 SIG_KILL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42456670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com