问题标签 [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 投票
14 回答
75884 浏览

python - 确保子进程在退出 Python 程序时死亡

有没有办法确保所有创建的子进程在 Python 程序退出时都死了?我所说的子进程是指用 subprocess.Popen() 创建的那些。

如果不是,我应该遍历所有发出的杀戮然后杀死-9吗?有什么更清洁的吗?

0 投票
5 回答
87319 浏览

unix - 在 UNIX 系统上杀死一个已失效的进程

我的系统上有一个已失效的进程:

如何在不重新启动机器的情况下终止上述进程?我试过了

0 投票
5 回答
8439 浏览

c - 如何判断进程的状态(即是否为僵尸)

如何在 Linux 下使用 C 获取有关进程状态的信息(即,如果它是僵尸)?

在阅读了到目前为止的答案之后,我想稍微缩小我的问题范围:我更喜欢纯 C 解决方案。在阅读了 ps 源代码(读取 /proc/)后,我认为应该有更好的方法并在这里问:)

0 投票
3 回答
1636 浏览

php - 饼干神秘再现的原因是什么?

我正在开发一个使用 cookie 来存储会话信息的 Web 应用程序。我已经手动删除了会话 cookie,因为我正在处理我不想要登录会话的代码的另一部分。然而,在页面重新加载几次后,会话 cookie 神秘地重新出现,包括一个我为测试目的只设置一次的早期 cookie,然后删除并且再也没有使用过。

我一直手动删除有问题的 cookie,但是,当我在一段时间后重新加载页面时,cookie 又回来了。我已经仔细检查了我的代码,我很肯定我没有在任何地方设置这些 cookie。我的代码目前都在一个文件中,并且我没有包含任何内容,因此我不可能忽略某些内容。

我的代码在 PHP 中,并在我最初创建这些 cookie 时使用了 setcookie() 调用。

我没有在 cookie 上设置过期日期。使用 Safari 4 Beta 和 GlimmerBlocker 代理。

这种奇怪行为的解释是什么?

0 投票
3 回答
1812 浏览

unix - 使用 fork 和套接字时处理不正常的关闭

我有一个服务器,它监听套接字连接并根据请求执行不同类型的操作。其中之一是长期存在的数据库查询,服务器为此分叉。

服务器保留所有活动子节点的日志,并且每当被要求关闭时,它会在退出之前杀死所有子节点。有几次我遇到服务器崩溃或被不优雅地杀死的情况,这导致子进程成为孤儿。如果我再次尝试恢复服务器,它将拒绝说监听套接字无法绑定,因为该地址/端口已经绑定。

我正在寻找一种方法来改善这种情况,以便主服务器进程可以立即恢复。我已经尝试从孩子那里监视父母的存在并在消失后立即退出,但这只会导致僵尸进程并且套接字似乎仍然被绑定。

该服务器是用 Python 编写的,但欢迎任何语言的任何解释或建议。

0 投票
3 回答
3004 浏览

perl - 为什么我的 Perl 程序在 fork 后没有收获子进程?

我一直在尝试使用 Perl 编写一个简单的 ping 扫描仪供内部使用。由于它扫描 24 位 CIDR 网络,因此如果它在单个线程中运行,则该脚本需要很长时间才能运行。我曾尝试添加 fork 功能来加快进程,但我的第一次尝试几乎花费了相同的时间,因为在任何给定时间只有一个子进程处于活动状态。

我在perlipc文档和Perl Cookbook中阅读了子进程,并提出了第二个版本:

当我扫描我的内部网络时,输出是:

从结果中可以看出,成功扫描的线程打印“up”消息,干净地退出并被父进程收割。同时,其他 251 个线程悬空连接到 '/sbin/init',这可以从快速的 'ps -ef' 列表中看出。如果我在退出语句之前的子处理块中添加一个'print "Child: $currIPending\n"',我会在我的 perl 脚本退出“之后”从终端上的剩余 251 个进程中获得输出。

这里发生了什么?我认为 $SIG{CHLD} 子例程与 waitpid 循环相结合将获得所有子进程并确保系统中没有僵尸/悬空进程。

同时,我还希望能够在任何给定时间运行特定数量的子进程,例如,'n' 个子进程同时运行,每当一个退出父进程时,如果需要,则启动另一个子进程但没有更多在任何特定时刻都比'n'个孩子。这可能吗?如果是,我可以得到一些伪代码来帮助指导我吗?

0 投票
3 回答
3033 浏览

objective-c - Why does my program crash when accessing a property with self. and a synthesized accessor?

I have data object class:

I can set the title property just fine when using non-synthesized methods, but when I set a property with synthesized accessors I get an error in the updateText method on the line that reads:

The error is:

Why do identical non-synthesized accessors work and synthesized ones don't?

The object is created in main thread and Error appears when it's accessed from NSOperation thread.

0 投票
1 回答
794 浏览

timer - 线程、子进程和僵尸

我需要使用线程和 SSH 在精确的时刻分别启动多个远程作业。所以我写:

该代码有效,但它使我的操作系统充满了僵尸。老实说,我相信communicate() 方法负责处理子进程,等待它终止。我哪里错了?

0 投票
6 回答
28685 浏览

bash - 为什么 cron 生成的进程最终会失效?

我有一些进程显示为<defunct>topps)。我已经从真实的脚本和程序中总结了一些东西。

在我的crontab

的内容launcher.sh(当然标记为可执行):

的内容tester.sh(当然标记为可执行):

ps显示以下内容:

请注意,tester.sh不会出现 - 它在启动后台作业后已退出。

为什么launcher.sh坚持,标记<defunct>?它似乎只在由 --cron而不是我自己运行它时启动。

附加说明:launcher.sh是本系统运行的常用脚本,不易修改。其他的东西(crontab, tester.sh,甚至是我运行的程序而不是sleep)可以更容易地修改。

0 投票
3 回答
1018 浏览

iphone - NSZombieEnabled 不报告导致 EXC_BAD_ACCESS 错误的对象类型

由于某种原因,我在 UIKit 内部发生了崩溃;EXC_BAD_ACCESS 错误正在发生,例如 8 次调用深入到dismissModalViewController 调用中。我尝试为我的可执行文件启用 NSZombieEnabled,但无论僵尸是否打开,控制台日志都会打印相同的错误,而且我不知道是哪个对象导致了问题。我需要做些什么来让控制台打印正确的信息吗?