Ask*_*nsP 0 perl system backticks exitstatus
inter.pl 的代码是:
\nuse strict;\nuse warnings;\n\nmy $var1=`cat /gra/def/ment/ckfile.txt`; #ckfile.txt doesn't exist\nprint "Hello World";\nexit 0;\nRun Code Online (Sandbox Code Playgroud)\next.pl的代码
\nmy $rc = system ("perl inter.pl");\nprint "$rc is rc\\n";\nRun Code Online (Sandbox Code Playgroud)\n在这里,当我运行“perl ext.pl”时,$rc 为 0。
\n虽然 inter.pl (/gra/def/ment/ckfile.txt) 内的文件不存在\xe2\x80\x99t ,但我得到的 $rc 为 0。
\n在同一场景中,我希望 $rc 为 != 0 (在某种程度上,它应该是一个错误,因为文件 ckfile.txt 不存在)。
\n注意: 我无法在 inter.pl 中进行任何修改
\n如何实施?
\n提前致谢。
\n如果您希望程序具有非零退出状态,则需要替换 (无用) exit 0;.
my $var1=`cat /gra/def/ment/ckfile.txt`;
exit 1 if $?;
Run Code Online (Sandbox Code Playgroud)
或者
my $var1=`cat /gra/def/ment/ckfile.txt`;
die("Can't spawn child: $!\n") if $? == -1;
die("Child killed by signal ".( $? & 0x7F )."\n") if $? & 0x7F;
die("Child exited with error ".( $? >> 8 )."\n") if $? >> 8;
Run Code Online (Sandbox Code Playgroud)