根据文件:
没有办法暂时从关键部分"阻止"信号(因为所有Unix版本都不支持).
什么阻止我使用signal.signal(signum,SIG_IGN)阻止它,然后添加信号?
Bra*_*des 11
阻止你的是,如果信号在SIG_IGN到位时实际到达,那么它将被忽略并丢弃.当你稍后再添加信号时,为时已晚,因为它已经消失了,你永远不会得知它发生了.
因此,您将"忽略"(=抛弃)信号而不是"阻止"它(=保留它以便在关键部分结束时进行处理).你在这里的困惑可能只是因为我不明白"阻塞"信号意味着什么:它意味着操作系统挂在信号上,让它等待直到你的关键部分完成.
请参阅(作为此类各种问题的一个很好的参考)W.Richard Steven 在UNIX环境中的高级编程.我的版本中的第10.8节"可靠的信号术语和语义"是我在回答之前检查过的,以确定我的答案.
更新:在我的Ubuntu笔记本电脑上,"man sigprocmask"(如果安装了manpages-dev)似乎是开始学习信号阻塞的手册页.同样,正如Python文档所述,这在所有Unix下都不可用,所以如果你真的使用"sigprocmask",不要指望你的旧Irix或AIX盒子运行你的Python程序.但也许你并不担心.:-)