2016-10-20 17 views
3

サブプロセスを開始するPythonスクリプトがあります。これは、subprocess.Popen()を使用して別のPythonスクリプトを起動します。このサブプロセスは、Popenを使用して別のサブプロセス(別のPythonスクリプト)を開始します。 スクリプトAはスクリプトCを呼び出すスクリプトBを呼び出します。 os.kill()を使用してプロセススクリプトBを終了すると、スクリプトCを実行しているプロセスが終了します。 これを行う方法がない場合は、Pythonのサブプロセス終了

答えて

2

スクリプトABを使用している場合、os.killを使用すると、Cはそれ自体は殺されません。

これを確実にするために、スクリプトBは、それが

# this is in script B 
import functools, atexit 

def kill_children(*pids): 
    import os, signal 

    for pid in pids or []: 
     os.kill(pid, signal.SIGTERM) 

# we start a process for C 
c_pid = ... 

# kill C when we we exit 
atexit.register(functools.partial(kill_children, c_pid)) 
+0

を終了すると、それはすべての子供たちを殺すよう多分ここで 'os.killpg'を使用するためのアイデアだろうCを殺すの世話をすることができます。 –

関連する問題