我正在Ruby中编写一个小型命令行程序,用于查找特定文件夹中的更改。
该程序每隔几秒重复一次循环,看看是否有变化。要停止程序,用户可以使用Ctrl + C(将^ C发送到控制台)。
现在,当发生这种情况时,Ruby会发送以下堆栈跟踪:
^C./filename.rb:64:in `sleep': Interrupt
from ./filename.rb:64:in `block in parse'
from ./filename.rb:62:in `loop'
from ./filename.rb:62:in `parse'
from ./filename.rb:124:in `<main>'
我想更改此消息以显示Exiting now...
消息,类似于Rails以这种方式关闭时显示的程序。
如何做到这一点?
答案 0 :(得分:7)
执行 ctrl + c 只需将SIGINT
信号发送到给定的ruby进程。您可以通过拯救Interrupt
:
begin
loop do
puts "foo bar baz"
end
rescue Interrupt
puts "\nExiting..."
end