1
我有一個命令行Ruby腳本,我需要區分不同的SignalException s。具體而言,我想捕獲並忽略control + c(SIGINT
),並在收到控件+ \(SIGQUIT
)時退出腳本。區分命令行Ruby腳本信號的最佳方法
我還是比較新的Ruby,想知道最好(或規範)的方式來實現我的目標。我也想知道是否有可能遇到操作系統差異(我目前在OS X上運行,但是我的解決方案是否可以在Windows,Linux等上運行?)
我能夠獲得
- 從慶典:兩種不同的方式可能信號
stty -a
(這是很好的,因爲它顯示的控制鍵組合技)通過IRB - :
Signal.list
這裏是我如何與玩弄這東西:
#!/usr/bin/env ruby
while true
begin
puts "Spinning my wheels..."
loop {}
rescue Interrupt => e
puts "\nCaught ^C - ignoring"
rescue SignalException => e
puts "\nCaught #{e.inspect}"
if e.message == "SIGQUIT"
puts "Shutting down..."
exit
end
end
end
謝謝!這就是我開始的方式,但是爲了拯救語義學,它更容易閱讀。我一定會改回來的。 – RobertJoseph