是的,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();
來源
2011-07-22 07:48:22
cjm
優秀的例子。謝謝! (現在唯一的問題顯然是Wait(INFINITE)有點沒有反應:-) –