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

在Perl中覆盖die并仍在Windows上返回正确的退出代码

发布时间:2020-12-15 23:21:00 所属栏目:大数据 来源:网络整理
导读:在 Windows上,我想只在脚本死亡时执行某些操作. 下面的块没有帮助;我认为这是因为Windows不支持信号. $SIG{__DIE__} = sub { qx(taskkill /F /IM telnet.exe); CORE::die @_;} 然后我尝试了这个: END { qx(taskkill /F /IM telnet.exe); exit $exit_code;}
在 Windows上,我想只在脚本死亡时执行某些操作.
下面的块没有帮助;我认为这是因为Windows不支持信号.

$SIG{__DIE__} = sub {
    qx(taskkill /F /IM telnet.exe);
    CORE::die @_;
}

然后我尝试了这个:

END {
    qx(taskkill /F /IM telnet.exe);
    exit $exit_code;
}

它执行了taskkill,但退出时退出代码为0.我需要传播exit_code,因为我们会根据它进行进一步处理.

解决方法

END块可以设置$?控制退出值.

END {
      qx(taskkill /F /IM telnet.exe);
      $? = $exit_code;
}

(编辑:李大同)

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

    推荐文章
      热点阅读