首先,找到一些关于退出代码的背景 in perl ( also here ) 和 on Windows .
现在 - 当我从 perl 脚本执行另一个进程时(我对方法持开放态度,qx
/open
/system
/exec
/IPC::Run
等)在 Windows 上:
是否可以捕获 0
- 255
范围之外的退出代码?
在 Windows 上,一个进程可以返回一个完整的(带符号的)32 位退出代码,返回 0x8...0...
的情况并不少见,也就是说,一些 COM 错误代码或类似的东西。
最佳答案
是的,Win32::Process可以返回完整签名的 32 位退出代码。使用 GetExitCode
方法。但这有点棘手,因为返回值不是退出代码(它是 Windows GetExitCodeProcess 函数的返回值,表示函数成功或失败)。退出代码存储在您传递给方法的变量中。
use Win32::Process;
use Win32;
sub ErrorReport{
print Win32::FormatMessage( Win32::GetLastError() );
}
my $ProcessObj;
Win32::Process::Create($ProcessObj,
"C:\\winnt\\system32\\notepad.exe",
"notepad temp.txt",
0,
NORMAL_PRIORITY_CLASS,
".") or die ErrorReport();
$ProcessObj->Wait(INFINITE);
my $exitCode;
$ProcessObj->GetExitCode($exitCode) or die ErrorReport();
关于windows - 是否可以使用 perl 处理退出代码 > 255?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6786812/