我有一个在后台线程中运行的服务器,我使用 python -i 启动它,这样我可以获得一个交互式控制台,我可以在其中输入命令并轻松调试它。但是当我按下 Ctrl-D 时,由于服务器仍在后台线程中运行,控制台不会退出。如何捕获 Ctrl-D 事件以便可以关闭服务器并正常退出?我知道如何用信号捕捉 Ctrl-C,但由于我习惯按 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 控制台。