perl 调用 shell——中断 ^C 停止 shell,而不是 perl
我想使用 Perl 脚本来批处理由 system() 调用的重复操作。当出现问题并且我想中断此脚本时,^C 会被 shell 捕获,停止任何作业,而 Perl 脚本会愉快地进行下一个作业。
有没有办法可以调用作业以便中断将停止 Perl 脚本?
I want to use a Perl script to batch a repetitive operation which is invoked with system(). When something goes wrong and I want to interrupt this script, the ^C is captured by the shell, stopping whatever job, and the Perl script goes merrily along to the next one.
Is there a way I can invoke the job so that an interrupt will stop the Perl script?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以检查
$?
来查看系统执行的命令是否因信号2(INT
)而终止:这是解析
$?
的完整示例:因此,您想要的确切检查是:
参考文献:perldoc system for
$?
处理和system()
调用; perldoc perlvar 了解有关$?
的更多详细信息You can check
$?
to see whether the command executed by system died from signal 2 (INT
):Here's a full example of parsing
$?
:Therefore the exact check you want is:
References: perldoc system for
$?
handling andsystem()
call; perldoc perlvar for more details on$?
您没有检查
system
的返回值。添加到您的父程序:它的程序将按预期中止:
您可以使用 Try::Tiny 以便自行清理或使用不同的消息。
You are not checking the return value of
system
. Add to your parent program:and it program will abort as expected:
You may catch this exception with Try::Tiny in order to clean-up on your own or use a different message.