我想使用python Popen
独立运行一个python脚本作为UNIX shell命令。
Script1.py
:此脚本将采用多个参数。
Script2.py
:此脚本将解析某些条件,并准备调用Script1.py
所需的必要参数
假设Script2.py
解析了一些条件并准备了运行Script1.py的命令
命令:python Script1.py arg1 arg2 arg3
目前正在运行脚本:
proc=subprocess.Popen(Command,shell=True,stdout=None, stderr=None)
但是,当我手动杀死Script2.py
(使用CTRL + C)时,我可以看到Script1.py也被杀死/终止。
如何独立运行Script1.py
而不必担心Script2.py
的状态?
答案 0 :(得分:0)
将进程与window$
上的父进程分离的方法是:
from subprocess import Popen
CREATE_NEW_PROCESS_GROUP = 0x00000200
DETACHED_PROCESS = 0x00000008
Popen(['python', 'drive:/path/to/loop_test.py', 'some_arg', 'another_arg'],
stdin=None, stdout=None, stderr=None, shell=True,
creationflags=DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP
)
在linux
上,你应该可以使用nohup
和preexec_fn=os.setpgrp
来实现同样的目标,即:
Popen(['nohup', 'python', '/path/to/loop_test.py', 'some_arg','another_arg'],
shell=True, stdout=None, stderr=None, preexec_fn=os.setpgrp )