如何在python中产生一个完全分离的进程?

问题描述

!!!子流程对我不起作用。

我想将 python 脚本 daemon.py 作为守护进程运行。此脚本需要从另一个名为 starter.py

的脚本激活

要求:

  1. starter.py 不应等待 daemon.py 完成。通过在 fork() 中使用 starter.py 来满足此要求。
import os

pid = os.fork()
if pid == 0:
   os.system("python daemon.py")

这满足了第一个要求,但仍然面临一个问题,将我们带到第二个要求。

  1. 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 (将#修改为@)