打开独立进程python

时间:2015-09-23 14:37:45

标签: python python-2.7 subprocess popen

我遇到了一个问题,使用子进程模块通过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

有什么想法吗?我甚至应该使用子进程吗?

2 个答案:

答案 0 :(得分:0)

我无法找到一种真正的通用方式来独立启动程序,因为它是自己的过程。我设法得到了我想要的东西,通过检查它是否是一个* nix操作系统并在开头追加'nohup'如果是真的。 Windows不会杀死子进程,所以它就解决了。

答案 1 :(得分:-1)

改为使用Multiprocessing库并以daemon运行该过程。