Я пытаюсь обнаружить отключение системы в скрипте Python, где мне нужно изящно остановить поток, он ловит его только тогда, когда я убиваю -15 pid, но когда я делаю shutdown -P или shutdown -r, он не перехватывает сигнал
import time
import threading
import signal
class Job(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.shutdown_flag = threading.Event()
def run(self):
while not self.shutdown_flag.is_set():
time.sleep(0.5)
f = open('threads.log', 'a')
f.write('%s Thread #%s stopped\n' % self.ident)
f.close()
class ServiceExit(Exception):
pass
def service_shutdown(signum, frame):
print('Caught signal %d' % signum)
raise ServiceExit
def main():
signal.signal(signal.SIGTERM, service_shutdown)
signal.signal(signal.SIGINT, service_shutdown)
try:
j1 = Job()
j2 = Job()
j1.start()
j2.start()
while True:
time.sleep(0.5)
except ServiceExit:
j1.shutdown_flag.set()
j2.shutdown_flag.set()
j1.join()
j2.join()
print('Exiting main program')