问题标签 [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 回答
5082 浏览

xcode - Xcode 在运行 iOS 测试/模拟器后离开僵尸进程

在 iOS 应用程序上使用 Xcode 工作了几天后,我注意到周围有超过 100 个僵尸进程。似乎每次我运行单元测试都会有一个,每次我在模拟器中运行完整的应用程序时可能会有一个。这是一个示例(已清理和截断):

倒数第二列中的 Z 表示它们是僵尸进程。launchd第三列中的 236 是父 PID,在这种情况下属于我的用户。

请注意,某些过程已经存在数天了。在这段时间里,我已经退出并重新打开了几次 Xcode。

有谁知道为什么会发生这种情况,或者这是否应该引起警惕?

0 投票
2 回答
1477 浏览

python - python/django 生成后台进程并避免僵尸进程

我需要在 django 中生成一个后台进程,视图立即返回,后台进程继续进行一些更改,然后更新数据库。这是通过os.spawnl()调用单独的 .py 文件的函数来完成的。

问题是后台进程完成后,变成了僵尸函数[python] <defunct>

我该如何避免呢?我遵循了这个这个例子,但在 django 渲染过程之后我仍然把子进程作为僵尸。

我想借此机会练习我的 *nix 进程管理技能,所以请帮我一个忙,不要给我 Celery 或其他 mq/async 任务解决方案,我讨厌依赖。

0 投票
1 回答
6995 浏览

c++ - 强制父进程收割子进程

我一直在拼命地试图杀死父进程的子进程。

我试过了: 1. kill -15 pid

  1. kill -shotgun pid

  2. 杀死 -9 pid

当 ps -A 在linux中时,他们都解决了将子进程写为:“defunct”(僵尸)。

如何终止进程并强制将其从进程表中清除。我必须清理它,因为它在进程表中缺少记录是我在代码中验证进程已死的方式。

谢谢 :-)

0 投票
2 回答
456 浏览

c - 僵尸进程在代码中创建,在另一部分被杀死

我想写一个“僵尸创造者”和“僵尸终结者”。要点是我想在一部分中创建僵尸并在代码的另一部分中终止它们。我正在使用 C。

例子:

我知道如何使用 fork(), if .. else 来做到这一点,但这不是重点。我正在寻找某种遥控器。那可能吗?让他睡很长时间可以解决吗?

0 投票
1 回答
2803 浏览

c - 无法在linux中创建僵尸进程

好吧,我有奇怪的问题。我无法在我的项目中创建僵尸进程,但我可以在其他文件中执行此操作。有简单的说明:

那个简单的代码创建了一个 10 秒的僵尸进程。我正在检查它确实存在。

但是,如果我将此代码复制到我的程序(我自己的 shell)中,那么像之前 BUT 僵尸进程一样执行的所有内容都根本不存在。我不知道有什么区别。这是相同的代码。

我应该知道更多信息吗?还有其他方法可以简单地创建僵尸吗?

0 投票
5 回答
10670 浏览

c - 杀死僵尸进程,知道linux C中的PID

我必须在 linux C 中杀死/清理一个僵尸进程。我所知道的只是僵尸的 PID。

我在一个循环中创建了一些僵尸进程:

我可以使用以下方法获取他们的 PID 号:

但是如何仅使用 PID 杀死/清理它们?我将 PID 保存在变量和标准信号中:

甚至不起作用,因为该过程已经死了。还有其他方法可以实现吗?请不要问我为什么要制造僵尸来杀死他们。事实并非如此。

0 投票
2 回答
4442 浏览

c++ - linux fork - execl,执行的进程变成僵尸

我正在尝试从子进程运行闪烁命令行。例如像这样:

但闪烁变成僵尸:

我试图设置信号(SIGCHLD,SIG_IGN);但没有成功。实际上我认为子进程在闪烁完成之前就死了。

从命令行运行闪烁,如:

不会使僵尸 - 闪烁正确关闭。我在那里缺少什么?

0 投票
1 回答
198 浏览

iphone - ViewController 解除分配上的 Rogue Zombie

在 Xcode 中,启动一个新的主从项目。称之为“测试”。

向其中添加一个新的“文件”。UIViewController用 XIB把它变成一个文件。称它为 TestViewController。

在方法中修改你的 MasterViewController 代码,insertNewObject:这样说:

现在在 TestViewController.m 中添加一个dealloc方法并简单地调用[super dealloc];

在此处设置断点并运行应用程序。一切都应该运行正常。

但是,如果启用 Zombie 对象,您可能会*** -[TestViewController class]: message sent to deallocated instance 0x7484f20 error在跨步时得到一个[super dealloc]

你也明白吗?我在 iOS6.0 模拟器上,并在尝试调试导致我出现此问题的问题时遇到了它。

想法赞赏。这是一个iOS错误吗?还是模拟器错误?

为“清晰”添加了 TestViewController 代码

0 投票
2 回答
190 浏览

ios - 从消息到 [CALayer] 的解除分配实例的僵尸堆栈跟踪没有源代码

当堆栈跟踪未链接回源代码时,我希望有人可以帮助如何将消息跟踪到 [CALayer] 的解除分配实例。

我在 XCode 的诊断中启用了 Zombie Objects 并通过 Zombie 分析运行它。

XCode 中的响应是“2013-01-27 22:37:31.506 AdventureA[9695:11303] *** -[CALayer release]: message sent to deallocated instance 0x757b530”

仪器的反应是: 乐器 - 僵尸

我完全不知道如何找出导致问题的原因;我已经看了好几个小时的源代码......

0 投票
1 回答
1144 浏览

ruby - 杀死rake任务时如何避免僵尸进程?

我有一个 bash 脚本可以连续调用一些 rake 任务。该脚本由持续集成服务器调用。问题是如果集成服务器终止任务(通过向脚本发送 SIGTERM),我无法让整个进程树被终止。例如,如果 Rake 正在使用 Parallel 功能运行一组 rspec 测试,则可以终止脚本和顶级 rake 命令,但不可避免地会有一些线程继续运行。

到目前为止,我已经尝试了许多在 bash 脚本中使用“trap”命令的不同方法。我尝试使用 pstree 查找所有子进程,使用“kill -9 0”杀死当前进程组等。但是,如果脚本在 rake 任务运行时被杀死,它似乎绕过了陷阱。据我所知,Rake 或者 Ruby 的线程库对进程组做了一些奇怪的事情,或者可能会干扰陷阱。

如果脚本不在 rake 任务的中间,它将正确捕获 SIGTERM,回显“Received SIGTERM”,然后杀死所有后代。

Rake 怎么可能干扰父进程(bash 脚本)中的陷阱语句?