2011-02-25 33 views
5

我達蒙在Python它運行外部程序:子子殺

subprocess.call(["java", "-jar", "start.jar"]) 

當我殺守護進程,子進程(JAVA)仍在運行

我如何才能讓使孩子進程也被殺害?

+0

你是如何殺死守護進程?如果你使用kill -9,那麼你就無能爲力,但除此之外,你可能會爲該信號編寫一個信號處理程序,捕獲它以殺死java進程,然後優雅地退出。 – Benson 2011-02-25 08:09:31

回答

7

使用subprocess.Popen()而不是subprocess.call()。例如:

import subprocess 
my_process = subprocess.Popen(['ls', '-l']) 

要終止子:

my_process.kill() 

爲了捕捉kill信號,可以使這樣的事情:

import signal 
import sys 
def signal_handler(signal, frame): 
    sys.exit(0) 
signal.signal(signal.SIGINT, signal_handler)