首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SIGKILL信号处理

SIGKILL信号处理
EN

Stack Overflow用户
提问于 2013-04-02 21:57:45
回答 2查看 17.9K关注 0票数 6

如果linux进程正在等待I/O (即,它处于SLEEP状态),并且针对它发出SIGKILL信号,那么在终止(STOPPED状态)时,它将通过RUNNING状态还是READY状态?

换句话说,对于处理由SIGKILL生成的系统中断的进程,是否需要传递RUNNINGREADY状态?

我知道在正常情况下进程可以处理来自内核的中断,并且知道SIGKILL终止无响应信号的目的是相当矛盾的,因此我怀疑是否对被终止的进程进行了多少控制。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-02 22:32:30

信号是由内核“传递”给进程的,因此从processA向processB发送信号会使用内核。当SIGKILL被交付时,内核不允许进程(用户模式)的任何活动,特别是进程停机: atexit调用,_exit。没什么。这个过程被系统简单地破坏了。这涉及到内核模式下的一些活动。缓存的数据会丢失。SYSV信号量和其他内核持久内存对象留在内存中。它可以是一个真正的混乱。

如果内核内存中的某些东西导致挂起,您可以使用linux中的sysrq接口:

http://tldp.org/HOWTO/Remote-Serial-Console-HOWTO/security-sysrq.html

--执行您能得到的任何表面上的有序关闭。

这就是为什么使用SIGKILL绝对是最后的手段,因为您无法知道您正在破坏什么。而且它不会修复所有的挂起。

你到底在做什么?

票数 8
EN

Stack Overflow用户

发布于 2013-04-02 23:01:06

除了jim mcnamara的回答:

无法处理SIGKILL (kill -9)。

更多信息,请访问https://stackoverflow.com/a/2541618/1456519查看答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15766036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档