Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
开放独立进程python_Python_Python 2.7_Subprocess_Popen - Fatal编程技术网

开放独立进程python

开放独立进程python,python,python-2.7,subprocess,popen,Python,Python 2.7,Subprocess,Popen,我在使用subprocess模块通过Python打开完全独立的进程时遇到了一个问题。我需要python脚本生成的进程继续存在,即使python程序死了。我注意到子进程创建了一个子进程,而nohup并没有让它保持活动状态。它需要在Windows和Linux上都能工作,所以我不确定os.fork是否能工作 我的目标结构是一个随时运行的主程序,它调用其他程序,如果主程序死了,我希望生成的程序继续存在 主程序 import subprocess import time subprocess.Popen

我在使用subprocess模块通过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)
导入时间
l=1
当l<100000时:
l+=1
印刷品(l)
时间。睡眠(1)
流程树如下所示:

主程序
|_调用程序

我希望它看起来像:

主程序
调用程序


有什么想法吗?我甚至应该使用subprocess来完成这个任务吗?

使用library,并将进程作为
守护进程运行使用library,并将进程作为
守护进程运行
我找不到真正的通用方法来独立启动程序,因为它是自己的进程。我通过检查它是否是一个*nix操作系统并在开头加上'nohup'来获得我想要的。Windows没有杀死子进程,所以它成功了。

我找不到一种真正通用的方法来独立启动程序,因为它是自己的进程。我通过检查它是否是一个*nix操作系统并在开头加上'nohup'来获得我想要的。Windows不会杀死子进程,所以它成功了。

第一个链接不会生成独立进程,第二个链接不适用于*nix系统。不确定如何独立于平台进行,但这有一些一般性线索。除非从管道中读取,否则不要使用
管道。另外,显式地使用
close\u fds=True
(Python 2需要它)。它还应该解决“nohup不能保持其活动”的问题。第一个链接不会产生独立的进程,第二个链接不适用于*nix系统。不确定如何独立于平台进行,但这有一些一般性的线索。除非从管道中读取,否则不要使用
管道。另外,显式地使用
close\u fds=True
(Python 2需要它)。它还应该解决“nohup不能让它生存”的问题。这与OP想要的正好相反。如果主进程退出,则其所有后台子进程都将被终止。注:有不同的含义,与OP想要的相反。如果主进程退出,则其所有后台子进程都将被终止。注意:与具有不同的含义,您可能还需要
preexec\u fn=os.setpgrp
(也许还需要)。Windows上没有进程树。Windows上有“作业对象”,这里是,您可能也需要
preexec\u fn=os.setpgrp
(也许还需要)。Windows上没有进程树。Windows上有“作业对象”,下面是