Matando un proceso creado con el subproceso de Python.Popen ()

Aquí está mi pensamiento:

En primer lugar, creé un proceso utilizando subprocess.Popen

Segundo, después de cierto tiempo, traté de matarlo por Popen.kill ()

import subprocess import os, signal import time proc1 = subprocess.Popen("kvm -hda /path/xp.img", shell = True) time.sleep(2.0) print 'proc1 = ', proc1.pid subprocess.Popen.kill(proc1) 

Sin embargo, “proc1” todavía existe después de Popen.kill (). ¿Podría algún experto decirme cómo resolver este problema? Aprecio sus consideraciones.

Gracias a los comentarios de todos los expertos, hice todo lo que me recomendó, pero el resultado sigue siendo el mismo.

proc1.kill() #it sill cannot kill the proc1

 os.kill(proc1.pid, signal.SIGKILL) # either cannot kill the proc1 

Gracias de todos modos.

Y todavía estoy esperando su valiosa experiencia en resolver este delicado problema.

En tu código debería estar

 proc1.kill() 

Tanto kill o terminate son métodos del objeto Popen que envía la señal de signal.SIGKILL al proceso.

process.terminate () no funciona cuando se usa shell=True . Esta respuesta te ayudará.

Utiliza Popen método de matar a Popen

 process = subprocess.Popen( task.getExecutable(), stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True ) process.kill() 

¿Qué hay de usar os.kill? Vea los documentos aquí: http://docs.python.org/library/os.html#os.kill