2014-11-08 62 views
1

我想在用戶按下ctrl-c時關閉套接字。這工作正常,如果套接字仍在做某事。但是,當套接字完成它的工作,並沒有做任何事情,我按Ctrl - C沒有任何反應。順便說一句,我使用的是Windows 8.1。關閉套接字ctrl-c不能正常工作

這裏是我的代碼:

# close socket ctrl-c 
from signal import signal, SIGINT 
def sigint_received(signum, frame): 
s.close() 
exit(0) 
# register SIGINT callback 
signal(SIGINT, sigint_received) 

當我嘗試這個代碼,我有同樣的問題:

OriginalExceptHook = sys.excepthook 
def NewExceptHook(type, value, traceback): 
if type == KeyboardInterrupt: 
    exit("\nExiting.") 
else: 
    OriginalExceptHook(type, value, traceback) 
sys.excepthook = NewExceptHook 

任何人都知道什麼是錯的?

+0

可以顯示在您的插座是做代碼'something'或「沒有」?是在一個循環? – Anzel 2014-11-08 18:30:00

+0

是的,它有一段時間(1){等待數據}循環。 – user3801533 2014-11-09 12:20:37

+0

你有沒有嘗試'提高KeyboardInterrupt'? – Anzel 2014-11-09 18:09:25

回答

1

重新註釋,使用except任何意外KeyboardInterrupt將趕上按「Ctrl + C」一樣,我的意思是這樣的:

while 1: 
    try: 
     ... your stuff here ... 
     ... you should also break the while loop if no data is received ... 
    # and except it when Ctrl + C like happens 
    except KeyboardInterrupt: 
     print "Ctrl C or alike is pressed..."