僵尸怎么伤害?

时间:2011-03-18 10:16:03

标签: perl fork zombie-process

来自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()。

关于僵尸的坏处是他们消耗记忆还是僵尸有更多伤害的方法?

2 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:8)

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