2010-11-03 26 views
32

Aquí está mi pensamiento:Matar a un proceso creado con subprocess.Popen de Python()

En primer lugar, he creado un proceso mediante el uso de subprocess.Popen

En segundo lugar, después de cierta cantidad de tiempo, he intentado para 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(). ¿Algún experto me podría decir cómo resolver este problema? Aprecio sus consideraciones.

Gracias a los comentarios de todos los expertos, hice todo lo que 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 a todos lo mismo.

Y todavía estoy esperando su preciosa experiencia para resolver este delicado problema.

+0

¿Por qué necesita el "shell = True"? Sin esto, parece funcionar exactamente como esperas. –

+4

En lugar de poner [Resuelto] en el título, elija la respuesta correcta haciendo clic en el símbolo de verificación. – bluish

+1

propia respuesta está aquí: http://stackoverflow.com/questions/4789837/how-to-terminate-a-python-subprocess-lachedched-with-shell-true –

Respuesta

19

En su código Cabe

proc1.kill() 

matar o terminar es un método de objeto Popen que envía signal.SIGKILL señal al proceso.

+14

Gracias primero. Sin embargo, probé este, todavía no funciona ... – user495511

+2

que no funciona –

7

Sólo el uso del método de matar Popen

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

Esto funciona hasta que agregue "time.sleep (x)" delante de "process.kill()" .. – user495511

+2

Esto no funciona –

9

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

+0

muchas gracias, tu respuesta terminó mis 3 horas de depuración – tahayk

Cuestiones relacionadas