2017-04-17 17 views
1

pythonスクリプトをPython Popenを使ってUNIXシェルコマンドとして独立して実行したいと思っていました。Popenを独立して実行する

Script1.py:このスクリプトは複数の引数をとります。 Script2.pypython Script1.py arg1 arg2 arg3

は、現在のスクリプトを実行している:このスクリプトは、いくつかの条件を解析し、Script1.py

を呼び出すために必要な必要な引数を用意しておりますScript2.pyは、いくつかの条件が解析され、Script1.py コマンドを実行するためのコマンドを用意したと以下のように:

proc=subprocess.Popen(Command,shell=True,stdout=None, stderr=None) 

しかし、私は(CTRL + Cを使用して)手動でScript2.pyを殺したとき、私はそのスクリプトを見ることができました1.pyも殺される/終わりました。

のステータスを心配することなく、個別にScript1.pyを実行できますか?

答えて

0

window$に親からプロセスを切り離すための方法は次のとおりです。linux

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 
       ) 

あなたはnohuppreexec_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) 
+0

おかげで.. ..出来た!。 "preexec_fn = os.setpgrp"は何をするのか教えていただけますか? –

関連する問題