如何解决如何在python中产生一个完全分离的进程?
!!!子流程对我不起作用。
我想将 python 脚本 daemon.py
作为守护进程运行。此脚本需要从另一个名为 starter.py
要求:
-
starter.py
不应等待daemon.py
完成。通过在fork()
中使用starter.py
来满足此要求。
import os
pid = os.fork()
if pid == 0:
os.system("python daemon.py")
这满足了第一个要求,但仍然面临一个问题,将我们带到第二个要求。
-
daemon.py
即使我退出也应该继续运行starter.py
。使用fork
无法满足此要求。
然后我尝试使用 subprocess
此处的答案所建议的 Python spawn off a child subprocess,detach,and exit
import subprocess
subprocess.Popen(['python','daemon.py'],cwd="/",stdout=None,stderr=None)
这也有同样的问题。当我退出 starter.py
时,daemon.py
也会停止。
我在 SIGTERM
上使用 daemon.py
事件侦听器。它正在侦听来自 starter.py
的事件。因此,问题来了。
daemon.py
看起来像这样。
import sys
import signal
def handler():
other_business()
sys.exit(0)
while True:
business()
signal.signal(signal.SIGTERM,handler)
try:
time.sleep(1)
except KeyboardInterrupt:
exit()
Python 版本:3.5.2
如何完全独立于 daemon.py
运行 starter.py
?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。