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()
This programs prints Alive four times on stdout and then dies. While I am not handling the SIGALARM signal explicitly inside the program, I just expect the alarm to get ignored. However, on Linux, the script dies after the alarm is triggered. I have not been able to find any documentation for Linux which states that it should be the default behavior for the alarm signal. Any idea what is causing this behavior?
Advertisement
Answer
From the man pages, it’s pretty clear that this is expected. Under the “Standard Signals” section, the default action for SIGALRM is to terminate the process. This is the case on any of the Unix-like environments I’m aware of.