我有一個服務器在後臺運行一個線程,我使用python -i啓動它,這樣我就可以獲得一個交互式控制檯,我可以在其中鍵入命令並輕鬆進行調試。但是當我點擊Ctrl-D時,由於服務器仍在後臺線程中運行,控制檯將不會退出。如何捕獲Ctrl-D事件以便我可以關閉服務器並正常退出?我知道如何用信號捕獲Ctrl-C,但由於我按Ctrl-D的習慣,我通常會遇到一個'卡住'終端,這真的很煩人。如何在Python交互式控制檯中捕獲'Ctrl-D'?
謝謝!
服務器代碼(簡體)是這樣的:
import threading
import atexit
class WorkerThread(threading.Thread):
def __init__(self):
super(WorkerThread, self).__init__()
self.quit = False
def run(self):
while not self.quit:
pass
def stop(self):
self.quit = True
def q():
print "Goodbye!"
t.stop()
atexit.register(q)
t = WorkerThread()
t.start()
,我使用python -i test.py它得到一個python控制檯運行。
服務器不讀取任何輸入,但使用python -i在python控制檯中運行。控制檯是爲了輸入python表達式來調試服務器。 –
@ChiZhang,我更新了答案。 – falsetru
我更新了代碼,但是當我點擊Ctr-D –