我正在尝试使用Java的Runtime.exec()执行Perl解释器的副本。但是,它返回了错误代码9
。在运行该文件几次后,perl
解释器神秘地开始返回代码253,而我的命令完全没有变化。
代码253
/代码9
是什么意思?谷歌搜索perl
翻译的退出代码一事无成。我在哪里可以找到Perl解释器的退出代码列表?
答案 0 :(得分:7)
请参阅perldoc perlrun:
如果程序在语法上是正确的,则执行该程序。如果程序在没有点击
exit()
或die()
运算符的情况下运行结束,则会提供隐式exit(0)
以表示成功完成。
答案 1 :(得分:4)
在正常情况下,perl
将返回它运行的程序返回的任何内容。因此,如果不知道正在运行的程序,就无法概括返回值的含义。
答案 2 :(得分:4)
Perl本身没有任何已定义的退出代码;除非perl解释器以非常可怕的方式崩溃,否则退出代码由perl
正在运行的程序确定,而不是由perl
本身确定。
答案 3 :(得分:3)
如果脚本没有运行,perl解释器实际上会返回它自己的退出代码。大多数语法错误导致退出代码9:
未知功能/不允许使用裸字:
perl -e 'use strict; print scalar(localtime); schei;'
$? = 9
除以零:
perl -e 'use strict; print scalar(localtime); my $s = 1/0;'
$? = 9
语法错误:
perl -e 'use strict; print scalar(localtime); my $ff; $ff(5;'
$? = 9
使用die:
perl -e 'use strict; print scalar(localtime); die "twaeng!"'
$? = 9
一个未知模块是我发现perl以不同方式退出的唯一情况:
perl -e 'use strict; use doof; print scalar(localtime);'
$? = 2
BTW我还在寻找perl解释器退出代码的完整列表。除了perl口译员的消息来源,任何人都知道在哪里看?
答案 4 :(得分:1)
由于错误代码在某些运行后发生了变化;如果您正在运行Java
应用程序作为持续运行的webapp,请检查它是否可能是某种内存泄漏。
您可以使用perl解释程序的perl
选项运行它来解决各种问题的-Tw
脚本,对于已启用的污染模式和警告,请参阅perlrun以获取有关这些问题的详细信息。< / p>