问题标签 [zombie-process]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
998 浏览

c++ - 杀死一个进程会让僵尸进程困扰我...... :(

我有一个使用 fork 的程序。在子进程中,我只需登录到远程服务器并执行命令。在父进程中,我等待子进程完成其任务。如果它没有在预定的时间内完成它,我使用 kill(child_pid, SIGTERM) 杀死子进程。但是我注意到这会留下僵尸进程,例如

并且随着超时的增加,僵尸进程也会增加,最终无法再使用 ssh。

我怎样才能杀死子进程而不产生困扰我的僵尸?

0 投票
2 回答
3106 浏览

unix - UNIX 僵尸和守护进程

我知道当一个进程不能很好地清理(它的资源没有被回收/回收)时,就会创建一个僵尸。在调用 fork() 创建一个新进程后,父进程应该始终调用该进程的 waitpid 来清理它。

我还了解到,通过分叉一个本身由 fork 创建的子进程,然后让该子进程死亡来创建守护进程。显然,一旦您执行此操作,UNIX 中的 init 进程(pid #1)将接管该进程。

我想知道的是 - 据我所知,当父母去世时,它会自动清理孩子 - 那么僵尸是如何首先创建的?

其次,守护进程的父进程死掉了,那么为什么守护进程不被认为是僵尸呢?

0 投票
2 回答
430 浏览

python - Pylons 和僵尸进程

我正在尝试编写一个允许用户启动长时间运行的计算过程(例如几个小时)的应用程序。为此,我使用 PythonPopen()函数。只要主 Pylons 进程正常工作,一切都很好,但是当我重新启动 Pylons 进程时,如果上次启动粘贴程序留下任何僵尸进程,它不会响应任何请求。

这个问题的根源或解决方法是什么?

在此先感谢,伊万。

0 投票
1 回答
2358 浏览

linux - SIGCHLD 未在进程树中传递

我正在尝试创建一个进程来管理其他进程,如果孩子死了,那么父进程会重新启动进程和依赖于它的进程。

问题是我注意到如果我在这个结构中间重新启动一个进程时创建一个进程树结构,当新的子进程终止时我无法收到信号。

我写一个例子;假设我们有 3 个进程,祖父母,父母和孩子。祖父母分叉并启动父分叉并启动孩子(我将代码放在这篇文章的末尾)。现在,如果我杀死孩子一切正常,孩子就会正确重新启动。

如果我杀死父级,就会出现问题...重启子级的祖父级重新启动父级,但是如果我杀死子级,则进程保持在僵尸状态,并且 SIGCHLD 不会传递给父进程。

换句话说:

  • 启动祖父进程并等待所有 3 个进程都已启动
  • 杀死父进程并等待祖父母重新启动父进程,然后重新启动子进程
  • 现在杀死子进程,进程保持在僵尸状态。

我无法理解这种行为......我已经阅读了大量关于信号和等待的示例和文档,尝试在父和祖父母的分叉之前重置默认处理程序,但似乎没有任何工作......这是代码示例...

祖父母.cpp

父级.cpp

孩子.cpp

0 投票
2 回答
519 浏览

iphone - XCode 调试/跟踪僵尸/仪器泄漏

在我更新 Xcode 之前,我曾经能够双击 Instruments 中的僵尸/泄漏,它会直接将我带到煽动代码,但现在我似乎无法这样做,我不知道为什么,有什么想法吗?

0 投票
3 回答
8418 浏览

php - 从 PHP 启动一个守护进程

对于一个网站,我需要能够启动和停止一个守护进程。我目前正在做的是

守护进程已启动,但 Apache/PHP 挂起。做一个ps aux发现它sudo本身变成了一个僵尸进程,有效地杀死了所有进一步的进展。尝试从 PHP 启动守护程序时,这是正常行为吗?

是的,Apache 有权执行该/etc/init.d/daemonToStart命令。我更改了 /etc/sudoers 文件以允许它这样做。不,我没有让 Apache 能够执行任何类型的命令,只是允许网站运行的少数几个命令。

无论如何,回到我的问题,有没有办法让 PHP 以不创建僵尸进程的方式启动守护进程?我问这个是因为当我做相反的事情时,停止一个已经启动的守护进程,工作得很好。

0 投票
1 回答
341 浏览

ios - iOS:UIActionsheet(或 UIPopoverController 视图)变成僵尸

我有一个 UIViewController。用户可以在其中启动 UIActionsheet 或弹出框。如果设备旋转,UIViewController 会被有意释放。问题是 UIActionsheet / popover 继续存在并成为僵尸之后困扰我。用户可以单击僵尸中的按钮并使应用程序崩溃。我试图在 dealloc 或 shouldAutorotateToInterfaceOrientation 中调用 [actionsheet dismissWithClickedButtonIndex:0 animated:NO]。没有效果。感谢任何建议。谢谢。

0 投票
1 回答
363 浏览

c - 未收割的孩子和他的未来

因此,当孩子去世时,父母会得到SIGCHLD,但如果父母在执行 wait() 之前死亡,则孩子会重新成为init. 此时的孩子是zombieie <defunct>

接下来发生什么?

init对那个孩子做 wait() 吗?如果是,它什么时候做?关于时限的任何保证?

0 投票
1 回答
444 浏览

uikit - 消息发送到释放的实例,UIKit 框架崩溃,如何调试?

嘿,你们这些聪明人;

一个艰难的crash bug 调试了很多天,还是没有找到根本原因,渴望得到您的提示和指导。

它是一个表格视图控制器,但由于我们添加了许多其他 UI 控件,因此更加复杂。使用 Zombie 工具辅助调试并查找由于释放的表格视图而导致的崩溃仍然会收到外部事件。

问题。

  1. 请参阅 Zombie 的以下调用堆栈捕获,我不知道仍然发送了哪个意外事件。有什么方法可以帮助调试到里面的 UIKit 框架?

  2. 我是 iPhone 编程新手,我想知道如果你遇到这样的问题,你会尝试什么方法来寻找根本原因?如何尝试?如何暂停崩溃点?

我做了很多实验,到目前为止,所有的实验都被证明是失败的。需要您的帮助,任何想法和讨论将不胜感激,在此先感谢。

崩溃调用堆栈,被僵尸捕获。

0 投票
2 回答
373 浏览

java - 启动小程序后的僵尸 Java 解释器会阻止 Java 控制台在重新启动时重新出现

我有一个可以作为 JFrame 或 applet 运行的 java 应用程序。

在浏览器中启动小程序会在浏览器中添加一个新选项卡,还会显示 Java 控制台。在我关闭它们之后,我希望能够重复此操作并看到 Java 控制台重新出现。它不会重新出现,但是我可以在浏览器中重新加载我的小程序。

每次我必须杀死java火狐启动的这个僵尸解释器进程。

终止进程后,Java 控制台将重新出现。还尝试了使用铬的重现步骤,除了僵尸进程的命令行不同之外,结果相同。

注意事项:

  • 当我关闭包含小程序的浏览器选项卡时,小程序处于正常状态,等待用户在 UI 上执行操作。
  • 在 applet 重新启动之间完全关闭浏览器也可以解决问题,因为该java进程是浏览器进程的子进程。

有人有解释或解决方法吗?谢谢!