来自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 }
如果超时的操作是 system() 或 qx(),这种技术很容易产生僵尸。如果这对您很重要,您将需要执行自己的 fork() 和 exec(),并终止错误的子进程。
我有一个类似的代码,其中超时的操作是 system() 或 qx()。
僵尸的坏处是它们消耗内存还是僵尸可以伤害的方式更多?