Sys::Syslog 会在您的脚本死掉时为您调用 closelog() 吗?

Does Sys::Syslog call closelog() for you if your script die()s?

这可能是一个语法问题,但无论如何,只是为了澄清...... perldoc on Sys::Syslog 声明:

The Third Rule of Sys::Syslog is: The program crashes, dies, calls closelog , the log is over.

如果 'the program' 指的是整个事情,包括我的脚本和 Sys::Syslog,这是否意味着 Sys::Syslog closelog() 正在调用我?

如果不是,这是否意味着我应该将 closelog() 放在 END 块中?

Sys::Syslog 不会 在退出时调用 closelog()。查看 closelog()disconnect_log() 调用 https://metacpan.org/source/SAPER/Sys-Syslog-0.33/Syslog.pm.

但在大多数情况下,在脚本中省略 exit/die 上的 closelog() 是安全的:描述符将在进程退出时关闭。

大多数情况 表示当 Perl 解释器在脚本的 exit/die 处终止时使用普通脚本的情况。排除项是特殊环境,例如 mod_perl:如果您的脚本终止,进程不会退出。