首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果所有信号都被忽略了呢?

问如果所有信号都被忽略了呢?
EN

Unix & Linux用户
提问于 2018-05-19 05:21:55
回答 2查看 2.1K关注 0票数 2

据我所知,某些信号用于停止/继续和终止/终止进程。如果我让这个过程忽略所有的信号,会发生什么?是僵尸还是无法被杀的东西?

EN

回答 2

Unix & Linux用户

发布于 2018-05-19 09:56:49

有些信号是不容忽视的。SIGKILL总是杀死一个过程而不给它一个反应的机会。SIGSTOP总是暂停一个过程而不给它一个反应的机会。一些Unix变体可能提供其他不可忽略的、不可移动的信号;Linux只有标准的“杀死”和“停止”。

进程在SIGKILL之后可以保持落后的唯一方法是,如果它目前处于不中断的系统调用中。进程不能运行更多的代码,但是它会一直留在后面,直到系统调用完成或到达一个可中断点。这通常太短,无法观察,但是您有时会看到它(状态D中的一个挥之不去的过程),原因是有错误的驱动程序、错误的硬件,或者有时使用网络文件系统。请参阅如果“杀-9”不起作用呢?

无法杀死的进程不会是“僵尸”,因为僵尸已经死了,而术语“僵尸进程”实际上是存在的,它意味着对应于已经死掉的进程的一个处理表条目。请参阅linux如何处理僵尸进程?

票数 3
EN

Unix & Linux用户

发布于 2018-05-19 05:39:23

首先,僵尸是一种状态,在这种状态下,一个女兵释放了除PID之外的所有资源,并等待最终收获,即完全释放。

内核进程具有Task_Interruptible状态,这意味着它不会响应任何传递的信号。

因此,最后,如果您设法掩盖所有信号以避免处理管理信号,则它们将是独立的,并且在必要时无法进行管理。这也可能导致系统过载。

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

https://unix.stackexchange.com/questions/444747

复制
相关文章

相似问题

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