gpt4 book ai didi

perl - Perl system() 调用会死掉吗?

转载 作者:行者123 更新时间:2023-12-04 07:56:19 25 4
gpt4 key购买 nike

可以一个system()电话可以die在 Perl 5 中?

(换句话说,为了 100% 防止执行 system() 调用的程序崩溃, 是否需要将其包装到 eval block 中,或者这完全没有必要?)

我在 perldoc system 中没有发现任何关于这种可能性的提及。 ,但也没有找到确切的“这个电话永远不会消亡”。

注意:这里的问题是关于基本 CORE Perl,没有 autodie或任何其他具有类似效果的自定义模块。此外,假设没有 ALRM信号已设置,或任何其他自定义信号处理程序。

我假设 Perl 5.* 的所有版本都表现相同,但如果不是,将不胜感激与 5.8 有关的答案。

最佳答案

除非我对来源的解释不正确,否则这似乎是一种可能性:

来源:Perl 5.16.2(也检查了 5.8.8),文件:pp_sys.c,行:PP(pp_system) 中的 4224代码块:

if (n != sizeof(int))
DIE(aTHX_ "panic: kid popen errno read, n=%u", n);
DIEPerl_die(pTHX_ const* pat, ...)util.c 中声明

根据文档,“panic:kid popen errno read”是指“forked child 返回了一个关于其 errno 的难以理解的消息”。

Explanation of panic messages in Perl :

The convention is that when the interpreter dies with an internal error, the message starts "panic: ". Historically, many panic messages had been terse fixed strings, which means that the out-of-range values that triggered the panic are lost. Now we try to report these values, as such panics may not be repeatable, and the original error message may be the only diagnostic we get when we try to find the cause.

关于perl - Perl system() 调用会死掉吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13234866/

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