擅长:python、mysql、java
<p>{else>在处理过程中应该避免长时间的处理,这样就可以避免在处理过程中调用较长的信号。原因是(在Python中)信号处理程序仍将被注册,任何相同类型的后续信号都将中断信号处理程序本身,导致它再次执行。这可能不是你想要的。在</p>
<p>或者您可以忽略处理程序中的信号,例如</p>
<pre><code>import signal
def sigHandler(sig, frame):
oldHandler = signal.signal(sig, signal.SIG_IGN)
backup() # lengthy processing here...
signal.signal(sig, oldHandler)
</code></pre>
<p>但请注意,这只会忽略同一个信号-它仍然有可能被其他信号中断。您的<code>backup()</code>是否可重入?在</p>
<p><a href="http://www.gnu.org/s/libc/manual/html_node/Nonreentrancy.html#Nonreentrancy" rel="nofollow noreferrer">This discussion on reentrancy</a>是相关的,尽管它是wrt C和Python有点不同,例如,不能阻塞信号(除非使用<code>ctypes</code>)。在</p>