2014-01-21 27 views
4

如果我正在linux终端上运行一个python程序,并且我按下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

@Ahhijit:我认为一个设置良好的信号处理程序比不得不将整个程序包装在'try/except'中更好。我想这取决于如果用户选择*不*中止程序会发生什么。 –

1

检查KeyboardInterrupt例外Python编写的。

您可以将您的代码放入try区块,用except捕获KeyboardInterrupt例外并让用户知道他已退出。

6

好了,你可以使用KeyBoardInterrupt,使用try-except块:

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" 
相关问题