sid*_*com 10 perl fork zombie-process
来自perlipc /信号:
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 }
Run Code Online (Sandbox Code Playgroud)
如果超时的操作是system()或qx(),则此技术可能会生成僵尸.如果这对你很重要,你需要自己做fork()和exec(),并杀死错误的子进程.
我有一个类似的代码,其中超时的操作是system()或qx().
关于僵尸他们消耗记忆的坏事还是僵尸可以伤害的方式更多?
Dav*_*man 12
主要问题是它们使用进程表槽.Linux的进程表可以容纳64k条目,因此除非你在不清理僵尸的情况下进行大量分析,否则这不会导致问题.我希望大多数(如果不是全部)其他现代*nix都具有相同大小的进程表.但是,当你跑步时ps,它看起来确实很难看.
内存不是一个真正的问题,因为每个僵尸只占用几个字节来记录它的退出状态.