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

前端之家收集整理的这篇文章主要介绍了在Perl中覆盖die并仍在Windows上返回正确的退出代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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;
}

猜你在找的Perl相关文章