加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 用perl处理退出代码> 255是否可行?

发布时间:2020-12-13 22:38:05 所属栏目:Windows 来源:网络整理
导读:首先,找一个关于退出代码 in perl( also here)和 on Windows的背景知识. 现在 – 当我在Windows上从perl脚本(我打开方法,qx / open / system / exec / IPC :: Run等)执行另一个进程时: 是否可以捕获0- 255范围之外的退出代码? 在Windows上,进程可以返回一
首先,找一个关于退出代码 in perl( also here)和 on Windows的背景知识.

现在 – 当我在Windows上从perl脚本(我打开方法,qx / open / system / exec / IPC :: Run等)执行另一个进程时:

是否可以捕获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:winntsystem32notepad.exe","notepad temp.txt",NORMAL_PRIORITY_CLASS,".") or die ErrorReport();

$ProcessObj->Wait(INFINITE);
my $exitCode;
$ProcessObj->GetExitCode($exitCode) or die ErrorReport();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读