我经常在也有 END { ... }
block 的程序中使用 fork
:
...
END { &some_cleanup_code }
...
my $pid = fork();
if (defined($pid) && $pid==0) {
&run_child_code;
exit 0;
}
子进程在退出时执行END {}
block ,但通常我不希望这种情况发生。有没有办法阻止子进程在退出时调用 END block ?除此之外,有没有办法让程序“知道”它是一个子进程,所以我可以说类似
END { unless (i_am_a_child_process()) { &some_cleanup_code } }
?
最佳答案
我认为没有任何方法可以阻止 END block 在 fork 进程中运行,但这应该可以让您检测到它:
my $original_pid; BEGIN { $original_pid = $$ }
... # Program goes here
END { do_cleanup() if $$ == $original_pid }
关于perl - 如何禁用子进程中的 END block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4307482/