Я ловить сигнал сРубиновые предотвратить по умолчанию выход CTRL + C^C
rescue Interrupt => e
Но он всегда печатает:
^CShutting down!
Есть ли способ, чтобы предотвратить дефолт CTRL + C
^C
Любые идеи ?
Я ловить сигнал сРубиновые предотвратить по умолчанию выход CTRL + C^C
rescue Interrupt => e
Но он всегда печатает:
^CShutting down!
Есть ли способ, чтобы предотвратить дефолт CTRL + C
^C
Любые идеи ?
Некоторые терминалы поддерживают 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
Идеальное второе предложение работает как шарм. Привет, оцените! –
Что вы пытаясь добиться, поймав сигнал? Возможно (и относительно легко) игнорировать сигнал, но может быть немного сложнее, если вам нужно контролируемое выключение, просто без сообщения. Похоже, какая-то другая библиотека отображает сообщение и может ожидать завершения выключения. –
Не могли бы вы прояснить, написано ли это написание кода «Выключение!». - т. е. вы хотите, чтобы это сообщение, а не '^ C', эхом отдавалось терминалу? –
Да, мой код делает «Shutting down». Когда получен сигнал, мой код отменяет текущие процессы, сохраняет прогресс, ставит «Выключение» и завершает 0. –