在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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |