I have a server which runs in a thread in the background, and I start it using python -i so I can get an interactive console where I can type in commands and easily debug it. But when I hit Ctrl-D, since the server is still running in a background thread, the console will not quit. How can I capture the Ctrl-D event so that I can shut down the server and quit gracefully? I know how to capture Ctrl-C with signals, but due to my habbit of pressing Ctrl-D I usually get a 'stuck' terminal which is really annoying.
Thanks!
The server code (simplified) is like this:
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()
and I run it using python -i test.py to get a python console.
 
     
     
    