Базовая потребность: У меня есть демон Python, который вызывает другую программу через os.system. Мое желание состоит в том, чтобы иметь возможность правильно обрабатывать завершение работы системы или SIGTERM, чтобы позволить вызываемой программе вернуться, а затем выйти.
Что я уже пробовал: Я пробовал подход с использованием сигнала:
import signal, time
def handler(signum = None, frame = None):
print 'Signal handler called with signal', signum
time.sleep(3)
#here check if process is done
print 'Wait done'
signal.signal(signal.SIGTERM , handler)
while True:
time.sleep(6)
Использование time.sleep не работает, и вторая печать никогда не вызывается.
Я прочитал несколько слов об atexit.register (обработчик) вместо signal.signal (signal.SIGTERM, обработчик), но при вызове kill ничего не вызывается.