我有一个命令行Ruby脚本,我需要区分不同的SignalException。具体来说,我想捕获并忽略control + c($("#chart_image").attr('src', this.id + "?" + d.getTime());
)并在收到控件+ \ {SIGINT
)时退出脚本。
我仍然相对较新的Ruby,并希望了解实现目标的最佳(或规范)方式。我也想知道是否有可能遇到操作系统的差异(我目前正在运行OS X,但我的解决方案是否适用于Windows,Linux等?)
我能够以两种不同的方式获得可能的信号列表:
SIGQUIT
(这很好,因为它显示控制键组合)stty -a
以下是我如何玩这些东西:
Signal.list
答案 0 :(得分:3)
捕获信号的正确方法是Signal.trap
:
Signal.trap('QUIT') do
puts "Shutting down..."
exit
end
Signal.trap('INT', 'IGNORE')
链接的文档对操作系统差异有一些评论,特别是:
可用信号名称及其解释列表取决于系统。信号传递语义也可能因系统而异;特别是信号传递可能并不总是可靠的。