【问题标题】:How do zombies harm?僵尸如何伤害?
【发布时间】:2011-07-18 01:22:47
【问题描述】:

来自perlipc/Signals

eval {
  local $SIG{ALRM} = sub { die "alarm clock restart" };
  alarm 10;
  flock(FH, 2); # blocking write lock
  alarm 0;
};
if ($@ and $@ !~ /alarm clock restart/) { die }

如果超时的操作是 system() 或 qx(),这种技术很容易产生僵尸。如果这对您很重要,您将需要执行自己的 fork() 和 exec(),并终止错误的子进程。

我有一个类似的代码,其中超时的操作是 system() 或 qx()。

僵尸的坏处是它们消耗内存还是僵尸可以伤害的方式更多?

【问题讨论】:

  • 是的,僵尸有更多的伤害方式,比如吃掉你的大脑。

标签: perl fork zombie-process


【解决方案1】:

它们消耗进程表中的内存和空间。

【讨论】:

    【解决方案2】:

    主要问题是它们消耗进程表槽。 Linux 的进程表可以容纳 64k 条目,因此这不太可能导致问题,除非您在没有清理僵尸的情况下进行大量分叉。我希望大多数(如果不是全部)其他现代 *nixes 具有相同大小的进程表。不过,当你运行 ps 时,它看起来确实很丑。

    内存不是问题,因为每个僵尸只占用几个字节来记录其退出状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      • 2011-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多