我遇到了一个问题,使用子进程模块通过Python打开完全独立的进程。即使python程序死了,我也需要python脚本生成的进程。我注意到子进程创建了一个子进程,nohup没有保持它的存活。它需要在Windows和Linux上都能工作,所以我不确定os.fork是否可行。
我的目标是一直运行的主程序调用其他程序,如果主程序死掉,我希望生成的程序继续存在。
主程序
import subprocess
import time
subprocess.Popen(["/usr/bin/python", "/home/jchoinski/Desktop/Sentinel1.1/programTest.py"], stdin=subprocess.PIPE, stdout=PIPE, stderr=PIPE)
while True:
time.sleep(1)
产生计划
import time
l = 1
while l < 100000:
l += 1
print(l)
time.sleep(1)
进程树如下所示:
MainProgram(主程序)
| _CalledProgram
我希望它看起来像:
MainProgram(主程序)
CalledProgram
有什么想法吗?我甚至应该使用子进程吗?
答案 0 :(得分:0)
我无法找到一种真正的通用方式来独立启动程序,因为它是自己的过程。我设法得到了我想要的东西,通过检查它是否是一个* nix操作系统并在开头追加'nohup'如果是真的。 Windows不会杀死子进程,所以它就解决了。
答案 1 :(得分:-1)
改为使用Multiprocessing库并以daemon
运行该过程。