Ich schreibe ein Python-Skript, das einen Thread ausführen muss, der auf einen Netzwerk-Socket hört.Python-Programm mit Thread kann nicht fangen STRG + C
Ich habe Probleme mit ihm zu töten Ctrl +c mit dem Code unten:
#!/usr/bin/python
import signal, sys, threading
THREADS = []
def handler(signal, frame):
global THREADS
print "Ctrl-C.... Exiting"
for t in THREADS:
t.alive = False
sys.exit(0)
class thread(threading.Thread):
def __init__(self):
self.alive = True
threading.Thread.__init__(self)
def run(self):
while self.alive:
# do something
pass
def main():
global THREADS
t = thread()
t.start()
THREADS.append(t)
if __name__ == '__main__':
signal.signal(signal.SIGINT, handler)
main()
Freuen uns über jede Beratung, wie Ctrl fangen + c und beenden Sie das Skript .
Die Verwendung von 'Thread.join()' ist vorzuziehen gegenüber Spin-Looping mit Timeouts. –
Warum können Signale nur vom Hauptkabel abgefangen werden? – tristan
http://docs.python.org/2/library/signal.html 7. Punkt. Nimm es als Gesetz :) – jaor