Linux如何处理僵尸进程

阿图尔

僵尸进程是在Unix / Linux系统中创建的。我们可以通过kill命令将其删除

但是Linux中是否有任何内置的清理机制来处理僵尸进程?

吉勒斯“别再邪恶了”

僵尸进程已经死亡。你不能杀死他们。kill命令或系统调用对僵尸进程没有任何影响。(您可以用来使僵尸消失kill,但您必须射击父母,而不是射击僵尸,正如我们稍后会看到的那样。)

僵尸进程实际上不是一个进程,它只是进程表中的一个条目。僵尸进程没有其他资源:它没有任何内存或任何正在运行的代码,它没有打开任何文件,等等。

当进程终止时,在清除所有其他资源之后,最后要做的就是进程表中的条目。该条目会保留,形成一个僵尸,以允许父进程跟踪子进程的退出状态。父级通过调用waitsyscall系列之一来读取退出状态此时,僵尸消失了。wait据说打来电话可以收割孩子,扩大了僵尸死了的比喻,但在某种程度上仍无法完全解决来世的问题。父级也可以指示它不在乎(通过忽略SIGCHLD信号,或通过sigaction使用SA_NOCLDWAIT标志进行调用),在这种情况下,进程表中的条目将在子级死亡时立即删除。

因此,僵尸仅在进程已死亡且其父级尚未调用时才存在wait只要父级仍在运行,此状态就可以持续下去。如果父级在孩子之前死亡或在未读取孩子状态的情况下死亡,则僵尸的父级进程将设置为PID为1的进程init的工作之一initwait循环调用,从而获得其父级留下的任何僵尸进程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

父母去世时如何处理僵尸进程?

来自分类Dev

当进程终止时,Linux如何处理内存损坏?

来自分类Dev

如何找到僵尸进程?

来自分类Dev

如何杀死由多处理模块创建的僵尸进程?

来自分类Dev

子进程如何处理文件指针?

来自分类Dev

如何处理外部进程中的空间

来自分类Dev

您如何识别僵尸进程?

来自分类Dev

如何找到僵尸进程的成因?

来自分类Dev

systemd如何处理托管进程的子进程的死亡?

来自分类Dev

Python多重处理导致许多僵尸进程

来自分类Dev

您如何找到僵尸进程的父进程?

来自分类Dev

Linux,waitpid,WNOHANG,子进程,僵尸

来自分类Dev

Linux僵尸进程的成本是多少?

来自分类Dev

运行命令时如何避免僵尸进程?

来自分类Dev

如何阻止R留下僵尸进程

来自分类Dev

如何使用wait()杀死僵尸进程

来自分类Dev

运行命令时如何避免僵尸进程?

来自分类Dev

Windows如何处理进程内存或资源耗尽?

来自分类Dev

进程在waitpid中等待时如何处理信号?

来自分类Dev

内核如何处理Linux的alarm()

来自分类Dev

Linux如何处理Move命令

来自分类Dev

Linux如何处理单独的/ boot分区?

来自分类Dev

Linux如何处理Shell脚本?

来自分类Dev

Linux如何处理Move命令

来自分类Dev

在Linux中如何处理中断?

来自分类Dev

在Linux内核中如何处理信号

来自分类Dev

当分叉的进程死亡时,该进程中的分离线程会如何处理?

来自分类Dev

当分叉的进程死亡时,该进程中的分离线程会如何处理?

来自分类Dev

为什么我不收获僵尸进程?(CentOS Linux,Python)