让我们假设我们用python编写了这样一个简单的守护进程:

def mainloop():
    while True:
        # 1. do
        # 2. some
        # 3. important
        # 4. job
        # 5. sleep

mainloop()

我们使用start-stop-daemon守护它,默认情况下发送SIGTERM (TERM)信号在——stop上。

让我们假设当前执行的步骤是#2。此时,我们发送TERM信号。

结果是执行立即终止。

我发现我可以使用signal.signal(信号。SIGTERM,处理程序),但问题是它仍然中断当前执行并将控制传递给处理程序。

所以,我的问题是-是否有可能不中断当前的执行,而是在一个分离的线程中处理TERM信号(?),以便我能够设置shutdown_flag = True,以便mainloop()有机会优雅地停止?