2014-11-08 61 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..."