信号和键盘中断

[使用Windows XP和Python 2.4.1] 我对以下代码有疑问,这些代码基本上完成了 我想要什么,当时是优雅地退出主循环的 用户按Control-C或Control-Break键: 导入信号 导入系统 导入时间 导入追溯 退出= false Def Mysighandler(*Whate): 全局退出#退出的变更值 退出= true 打印 打印"中断捕获并退出国旗集" #在按下Control-C或Control-Break时调用上述过程. old_sigint_handler = signal.signal(signal.sigint,mysighandler) old_sigbreak_handler = signal.signal(signal.sigbreak,mysighandler) 而1: 尝试: 如果退出: 休息#退出循环 打印"处理..." 时间. 除了IoError(Errno,Strerror): 如果errno == 4:#中断功能调用 #mysighandler打电话给 继续 else:#其他一些IOERROR-打印信息并突破循环 打印" ioError [%s]异常:%s"%(errno,, strerror) trackback.print_exc(file = sys.stdout) 休息 打印"完成" #还原旧信号处理程序 signal.signal(signal.sigint,old_sigint_handler) signal.signal(signal.sigbreak,old_sigbreak_handler) 我的问题是,为什么需要a除外? 如果剩下 出现,没有任何例外. 似乎抓住信号 在python的默认处理程序获得他们之前,请阻止它 变成一个例外. 我不明白这是怎么发生的 上述代码. 我读了其他几篇有关该主题的文章,尤其是本格特的文章 Richter在http://groups.google.com/group/compf.08170a?hl = en&, 但是无法弄清楚为什么[更多参与] 他的帖子中的示例似乎没有显示出这个问题(即 没有尝试/除外). 在此先感谢您的任何帮助. -martin

标签: python

添加新评论