2014-01-21 3 views
4

Если я запускаю программу python на терминале linux и я отменяю ее вручную, нажав ctrl + c, как я могу заставить свою программу что-то делать, когда это событие происходит.Python- Как проверить, не запущена ли программа во время работы?

что-то вроде:

if sys.exit(): 
    print "you chose to end the program" 
+0

Вы должны использовать 'модуль signal'. http://stackoverflow.com/a/18115530/1688590. Также обратите внимание, что проверка 'if sys.exit()' немедленно отключит вашу программу. – xbello

+1

@xbello, так как OP запрашивает выход с 'ctrl-C', сигнал не требуется. 'KeyboardInterrupt' достаточно. – FallenAngel

ответ

8

Вы можете написать функцию обработки сигнала

import signal,sys 
def signal_handling(signum,frame): 
    print "you chose to end the program" 
    sys.exit() 

signal.signal(signal.SIGINT,signal_handling) 
while True: 
    pass 

нажатие Ctrl + c посылает прерывание SIGINT, которое выводит:

вы решили закончить программу

+0

Почему downvote? –

+0

@TimPietzcker: Не, конечно. Это, кажется, правильный ответ, хотя люди привыкли использовать исключение KeyBoardInterrupt. – Abhijit

+1

@Abhijit: Я бы сказал, что обработчик сигнала настройки хорошо работает, чем обертывать всю вашу программу в 'try/except'. Я думаю, это зависит от того, что должно произойти, если пользователь выбирает * not * для отмены программы. –

1

Проверьте KeyboardInterrupt исключение в Python.

Вы можете поместить свой код в блок try, поймать исключение KeyboardInterrupt с except и сообщить пользователю, что он вышел.

6

Ну, вы можете использовать KeyBoardInterrupt, используя примерочных, за исключением блока:

try: 
    # some code here 
except KeyboardInterrupt: 
    print "You exited 

Попробуйте следующее в командной строке:

import time 

try: 
    while True: 
     time.sleep(1) 
     print "Hello" 
except KeyboardInterrupt: 
    print "No more Hellos" 
Смежные вопросы