python: как отлавливать ctrl-c
except KeyboardInterrupt,e:
signal
ы?
на всякие случай добавил инфы в первое сообщение.
Только учти, что твой time.sleep вывалится немедленно по любому сигналу.
устанавливаешь свой обработчик SIGINT
как? питоном обойтись можно? или сишные вызовы нужны?
Только учти, что твой time.sleep вывалится немедленно по любому сигналу.
Это не понял. Даже если свой обработчик?
http://docs.python.org/library/time.html#time.sleep
http://docs.python.org/library/signal.html#signal.signal
То, что нужно.
вот гуглил по этому слову. Можно более конкретно? или ссылку.Надо знать stdlib хотя бы на уровне названий модулей
http://docs.python.org/library/signal.html
Помнить нах не надо, само запоминается если часто используешь, и забывается если не используешь.
скорей надо уметь гуглить. Потому что первая ссылка в результатах гугла ведет сюда: Помнить нах не надо, само запоминается если часто используешь, и забывается если не используешь.
всё, сдаюсь
А в чём глубинный смысл менять поведение при получении сигнала sleep'ом ?
А если это сигнал о том, что пора заканчивать работу? Ты же хочешь корректно завершиться, а не дожидаться принудительной выгрузки, игнорируя все и вся в слипе?
и потом, если я хочу выгрузиться корректно, я вот и воспользуюсь переопределением обработчика через signal.
Наверное, я тебя не понимаю... Слип прервется и запустит тот самый обработчик сигнала. Я думал, ты интересуешься, почему слип прерывается отлавливаемыми сигналами.
Всё. Теперь дошло наконец.
Оставить комментарий
Phoenix
Какие идеи? notmyfunc - функция, которую я менять не могу.
Было бы идеально, чтобы после ctrl-c прога разрешила доделать notmyfunc, а потом завершилась.
UPD
Т.е. keyboardInterrupt не ловится в notmyfunc, в результате чего она не довыполняется.
Я хочу сделать так, чтобы этот сигнал попридержали, пока выполняется эта функция.