В Python я написал следующий код, чтобы узнать, могу ли я заставить мою программу не останавливаться на Control + C, как и все эти причудливые терминальные приложения, такие как Vim или Dwarf Fortress.
def getinput():
x = input('enter something: ')
while True:
try:
getinput()
except KeyboardInterrupt:
pass
К сожалению, в консоли Windows этот script завершается через несколько секунд. Если я запускаю его в IDLE, он работает так, как ожидалось. Версия Python 3.2.1, 3.2 действовала одинаково. Я что-то делаю неправильно?
РЕДАКТИРОВАТЬ: Если я удерживаю, Control + C, то есть.
Чтобы не заканчиваться на Control-C
, вам нужно установить обработчик сигнала.
Из документа Python здесь
Python устанавливает небольшое количество обработчики сигналов по умолчанию: SIGPIPE игнорируются (поэтому записывайте ошибки на трубах и сокеты можно сообщать как обычные Исключения Python) и SIGINT переведенный в KeyboardInterrupt исключение. Все это может быть переопределяется.
Итак, вам нужно будет установить обработчик сигнала, чтобы поймать сигнал SIGINT
и сделать то, что вы хотите.
Поведение с IDLE, вероятно, связано с тем, что у них установлен обработчик, который блокирует выход приложения.