gpt4 book ai didi

perl - 捕获从 Perl 中的批处理文件返回的错误代码

转载 作者:行者123 更新时间:2023-12-04 06:33:34 25 4
gpt4 key购买 nike

我有一个 perl 文件,它调用一个批处理文件来安装第 3 方程序。

主文件

system ("Installer.bat");
print "Error code is $? \n";

安装程序.bat
@echo off
installer.exe
echo errorlevel is %errorlevel% > logfile
exit %errorlevel%

批处理文件返回错误代码 3010,表明需要重新启动。
但是,perl 模块打印 49664。我认为它应该打印 3010。有人可以解释一下这是如何工作的吗?我想在我的 perl 代码中获取重新启动所需的错误代码,然后做一些清理工作并从 perl 模块重新启动机器。

以下相关点也不清楚。
- Windows 批处理文件只有 255 个错误代码,那么如何将 3010 作为错误代码返回?
- This place建议我们需要将错误代码右移 8 位才能得到 native 错误代码。因此,如果我将 49664 右移 8,我得到 194(仍然与 3010 不同)。但是我也注意到 3010 Mod 256 = 194

最佳答案

根据 http://search.cpan.org/perldoc?IPC::System::Simple :

从 IPC::System::Simple v0.06 开始,使用多个参数调用的 run 子例程将在 Win32 系统上提供完整的 32 位退出值。这与以前版本的 IPC::System::Simple 和 Perl 的内置 system() 函数不同,后者只能处理 8 位返回值。

关于perl - 捕获从 Perl 中的批处理文件返回的错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5116018/

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