Ruby:^ C(ctrl + C)命令行中断的文本很好

时间:2015-08-14 20:12:07

标签: ruby command-line interrupt

我正在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以这种方式关闭时显示的程序。

如何做到这一点?

1 个答案:

答案 0 :(得分:7)

执行 ctrl + c 只需将SIGINT信号发送到给定的ruby进程。您可以通过拯救Interrupt

来拦截它
begin
  loop do
    puts "foo bar baz"
  end
rescue Interrupt
  puts "\nExiting..."
end