2011-02-25 22 views
5

tengo Damon en Python que se ejecuta un programa externo:niño en demonio pitón

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

cuando mato demonio, el proceso hijo (Java) todavía se está ejecutando

cómo puedo hacer para que proceso infantil también es asesinado?

+0

¿Cómo estás matando el demonio? Si usa kill -9, no hay nada que pueda hacer, pero de lo contrario probablemente podría escribir un manejador de señal para esa señal, atraparlo para matar el proceso de java, y luego salir con gracia. – Benson

Respuesta

7

Use subprocess.Popen() en lugar de subprocess.call(). Por ejemplo:

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

Para terminar el niño:

my_process.kill() 

para captar la señal kill, podría por lo menos así:

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