是否可以处理退出代码> 255 与 perl?
首先,了解有关退出代码的一些背景 在 Perl 中 (也在这里)和在 Windows 上。
现在 - 当我从 perl 脚本执行另一个进程时(我对方法持开放态度,qx
/open
/system
/exec
/IPC::Run
等)在 Windows 上:
是否可以捕获外部退出代码0
的范围- 255
?
在 Windows 上,进程可以返回完整(带符号)的 32 位退出代码,并且返回 0x8...0...< /code>,即一些 COM 错误代码或类似的代码。
First, find a little background about exit code in perl (also here)and on Windows.
Now - when I execute another process from a perl script (I'm open as to the method, qx
/open
/system
/exec
/IPC::Run
, etc.) on Windows:
is it possible to capture exit codes outside the range of 0
- 255
?
On Windows, a process can return a full (signed) 32bit exit code, and it's not so uncommon to have something return 0x8...0...
, that is, some COM error code or somesuch.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,Win32::Process 可以返回完整签名的 32 位退出代码。使用
GetExitCode
方法。但这有点棘手,因为返回值不是退出代码(它是 Windows GetExitCodeProcess 函数,表示该函数成功或失败)。退出代码存储在您传递给该方法的变量中。Yes, Win32::Process can return the full signed 32-bit exit code. Use the
GetExitCode
method. But it's a little tricky, because the return value is not the exit code (it's the return value of the Windows GetExitCodeProcess function, which indicates success or failure of the function). The exit code gets stored into the variable you pass to the method.这是可能的,但并不简单。
Win32::API
模块可以公开 Windows Perl 脚本的 API。使用它为GetExitCodeProcess 创建代码引用
函数,使用死程序的进程标识符调用它,并解压结果。It's possible but it's not simple.
The
Win32::API
module can expose the Windows API to Perl scripts. Use it to create a code reference for theGetExitCodeProcess
function, invoke it with the process identifier of the dead program, and unpack the result.