为什么 SIGALARM 会杀死 Linux 上的 Python 程序?
Why is SIGALARM killing the Python program on Linux?
import signal
import time
import multiprocessing as mp
def launch():
signal.alarm(5)
while True:
time.sleep(1)
print "Alive"
p = mp.Process(target=launch)
p.start()
p.join()
这个程序在 stdout 上打印了四次 Alive
然后死掉了。虽然我没有在程序中明确处理 SIGALARM
信号,但我只是希望警报被忽略。但是,在 Linux 上,脚本在触发警报后死亡。我无法找到 Linux 的任何文档,其中声明它应该是警报信号的默认行为。知道是什么导致了这种行为吗?
从 man pages 来看,很明显这是意料之中的事情。在 "Standard Signals" 部分下,SIGALRM
的默认操作是终止进程。在我所知道的任何类 Unix 环境中都是这种情况。
import signal
import time
import multiprocessing as mp
def launch():
signal.alarm(5)
while True:
time.sleep(1)
print "Alive"
p = mp.Process(target=launch)
p.start()
p.join()
这个程序在 stdout 上打印了四次 Alive
然后死掉了。虽然我没有在程序中明确处理 SIGALARM
信号,但我只是希望警报被忽略。但是,在 Linux 上,脚本在触发警报后死亡。我无法找到 Linux 的任何文档,其中声明它应该是警报信号的默认行为。知道是什么导致了这种行为吗?
从 man pages 来看,很明显这是意料之中的事情。在 "Standard Signals" 部分下,SIGALRM
的默认操作是终止进程。在我所知道的任何类 Unix 环境中都是这种情况。