- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
旧方法“信号”和新方法“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,您可能需要考虑使用其他信号,例如 SIGHUP
、SIGINT
或 SIGQUIT
。这些其他信号可能被处理,一些 Unix/Linux 程序就是这样做的。
或者(捕捉 SIGKILL),您可能还需要考虑让一个进程等待以检测目标进程是否退出。例如,父进程可以从退出的子进程中寻找 SIGCHLD
信号,然后有效地导致发生您希望在信号处理程序中执行的相同事件。
关于linux - 进程 sighandler 可以处理 linux 信号 SIG_KILL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42456670/
我正在创建一个用户级线程库,实现抢占式循环调度程序。我有这样的处理函数: void handler(int signum) { gtthread_yield(); } 在gtthrea
目前我正在尝试创建一个信号处理程序,当它收到 SIGTERM 信号时,它会关闭打开的网络套接字和文件描述符。 这是我的 SigHandler 函数 static void SigHandler(int
是否可以在当前处理另一个信号时处理一个 sighandler? 是否可以在当前处理另一个线程执行时处理一个 sighandler? 谢谢,埃亚尔 最佳答案 一些答案在文档中是正确的here A p
最近我发现一些代码使用 signal : 286 static void sighandler( int signum ) 287 { 288 alarmed = 1; 2
最近我发现一些代码使用了signal : 286 static void sighandler( int signum ) 287 { 288 alarmed = 1; 2
设置:内核:4.1.16-v7+操作系统:armv7l GNU/Linux(主要是 debian) This is perl 5, version 20, subversion 2 (v5.20.2)
旧方法“信号”和新方法“sigaction”:我们的程序可以安全地处理 SIG_KILL 吗?不同的linux内核版本之间有区别吗?我试图从 2.6.30 升级到更高版本,并且想知道从开发的角度来看,
我是一名优秀的程序员,十分优秀!