我试图在用户按ctrl-c时关闭套接字。如果套接字仍在执行某些操作,则此方法工作正常。但是当套接字完成它的工作并且什么都不做时,我按ctrl-c不会发生任何事情。顺便说一句,我正在使用Windows 8.1。
这是我的代码:
# 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
有人知道怎么了吗?
重新评论,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..."
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句