gpt4 book ai didi

perl - 如何禁用子进程中的 END block ?

转载 作者:行者123 更新时间:2023-12-02 17:28:10 26 4
gpt4 key购买 nike

我经常在也有 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com