gpt4 book ai didi

perl - 守护进程关闭和清理

转载 作者:行者123 更新时间:2023-12-01 12:35:47 25 4
gpt4 key购买 nike

我有一个正在重构的小型 Perl 守护进程,我有一个最佳实践问题。

守护进程在启动时写出一个 pid 文件,并在关闭时将其删除。

您是否建议将 pid 文件删除代码放在这样的信号处理程序中:

$SIG{__DIE__} = \&cleanup;

或者我应该将该代码放在 END{} block 中吗?

最佳答案

SigDie 仅推荐用于调试目的,坚持使用 END 和 DESTROY block 。部分原因是 SigDie 可能会被覆盖,有时会意外地被包含的库或子程序覆盖,因为多个 END block 都将以相反的顺序执行。

这是您可能遇到的问题的示例;

#!/usr/bin/env perl
use strict;
use warnings;

$SIG{__DIE__} = sub { print("SIG:Foo\n"); };
END { print("END:Foo\n"); }

Foo::do();
die "Something went wrong";

package Foo;

sub do {
# do something useful, but oops forgot
# to remove my debug SIG...
$SIG{__DIE__} = sub { print("SIG:Bar\n"); };
}

END { print("END:Bar\n"); }

__END__
## Example Output, note no SIG:Foo

SIG:Bar
Died at test-end.pl line 10.
END:Bar
END:Foo

关于perl - 守护进程关闭和清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29980859/

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