让我们假设我们用python编写了这样一个简单的守护进程:
def mainloop():
while True:
# 1. do
# 2. some
# 3. important
# 4. job
# 5. sleep
mainloop()
我们使用start-stop-daemon
来守护它,它默认在--stop
上发送SIGTERM
(TERM
)信号。
假设当前执行的步骤是#2
。此时,我们正在发送TERM
信号。
结果是执行立即终止。
我发现我可以使用signal.signal(signal.SIGTERM, handler)
处理信号事件,但问题是它仍然中断当前执行并将控制传递给handler
。
所以,我的问题是-是否有可能不中断当前的执行,而是在一个单独的线程(?)中处理TERM
信号,以便我能够设置shutdown_flag = True
,以便mainloop()
有机会优雅地停止?