2016-12-04 49 views
0

我有一个python脚本有很多问题,但所有这些脚本的根本原因是它不会对键盘中断做出反应。我猜这个问题要么是我使用SSH 只有来连接,或者我正在使用线程。这是因为MCV,因为我可以使它:无功能的键盘中断

from threading import Thread   
import time, random                                    

def distance():                                      
    while True:                                       
     print "hi"                                    

def drive():                                      
    while True:                                       
     print "hi"                                    

distance = Thread(target=distance)                                
drive = Thread(target=drive)                                  
distance.start()                                     
drive.start() 

如果我停止使用kill PID停止,但我不希望有这样做,所有的时间。

回答

1

你可以简单地用Python“脱钩” SIGINT,使其恢复到系统默认的行为,这是结束该进程:

import signal 
signal.signal(signal.SIGINT, signal.SIG_DFL) 

请在开始你的线程,然后按Ctrl-C之前,而不是生成KeyboardInterrupt,将简单地终止程序。

+0

问题是我需要它来触发异常来运行'pz.cleanup'(在最终的程序中),否则我使用的电机将继续转动。虽然这很有用,但我认为它不适合我的目的。 –

+0

@sir_ian:在这种情况下,只需定义一个清理函数,它可以在关闭时执行您所需的任何操作,并将该函数传递给'signal.signal()'来代替'SIG_DFL'。 –

+0

天才(填充) –