2015-06-25 19 views
2

我与红宝石防止默认为Ctrl + C输出^ C

rescue Interrupt => e 

捕获信号,但它始终会显示:

^CShutting down! 

有没有办法来阻止默认CTRL + Ç输出:

^C 

任何想法?

+0

你是什么试图通过捕捉信号来实现?忽略信号是可能的(也是相对容易的),但是如果你需要一个受控制的关机,可能会有点困难,而没有信息。它看起来像其他库正在显示该消息,并可能期望执行关闭。 –

+0

您能否澄清是否您的代码编写了“关机”! - 即你想要那个信息,而不是回传给终端的“^ C”? –

+0

是的,我的代码确实把“关闭”。当收到信号,我的代码取消当前进程,保存进度,放置“关闭”,并退出0. –

回答

1

部分终端支持stty -echoctl禁用的控制字符呼应:

`stty -echoctl` 

begin 
    loop do 
    # ... 
    end 
rescue Interrupt => e 
    puts 'shutting down' 
end 

如果以上不工作,你可以通过设置禁用所有的呼应IO#echo=false

require 'io/console' 

STDIN.echo = false 

begin 
    loop do 
    # ... 
    end 
rescue Interrupt => e 
    puts 'shutting down' 
end 
+0

完美的第二个建议像一个魅力工作。欢呼声,感谢它! –