【发布时间】:2011-12-23 14:51:57
【问题描述】:
基本需求:我有一个 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(handler) 而不是 signal.signal(signal.SIGTERM, handler) 的文章,但 kill 时没有调用任何内容。
【问题讨论】:
-
我复制了你的代码,它工作得很好。你用的是什么版本的python等等?
-
您的代码似乎有效。你得到的输出/行为是什么?
-
等一下,我收集你需要的东西。
-
确实......它有效,我重构了我的代码将它放在那里我删除了一些我认为会导致问题的行--->关闭问题。不过谢谢!
-
我认为最好对这一点给出答案。你们中的一个人可以发布这个答案,以便我可以勾选它。