2010-11-03 25 views
32

Ecco il mio pensiero:Uccidere un processo creato con Python subprocess.Popen()

Prima di tutto, ho creato un processo utilizzando subprocess.Popen

In secondo luogo, dopo un certo periodo di tempo, ho provato di ucciderlo da 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) 

Tuttavia, "proc1" esiste ancora dopo Popen.kill(). Alcuni esperti potrebbero dirmi come risolvere questo problema? Apprezzo le tue considerazioni.

Grazie ai commenti di tutti gli esperti, ho fatto tutto ciò che hai raccomandato, ma il risultato rimane lo stesso.

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

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

Grazie lo stesso.

E sto ancora aspettando la tua preziosa esperienza per risolvere questo delicato problema.

+0

Perché è necessario "shell = True"? Senza questo sembra funzionare esattamente come ti aspetteresti. –

+4

Invece di mettere [Risolto] nel titolo, si prega di scegliere la risposta corretta cliccando sul simbolo di controllo. – bluish

+1

risposta corretta è qui: http://stackoverflow.com/questions/4789837/how-to-terminate-a-python-subprocess-launched-with-shell-true –

risposta

19

Nel codice dovrebbe essere

proc1.kill() 

uccidere o chiudere è un metodo di oggetto Popen che invia signal.SIGKILL segnale al processo.

+14

Grazie per prima. Tuttavia, ho provato questo, non funziona ancora ... – user495511

+2

che non funziona –

7

Utilizzare solo Popen metodo uccidere

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

Questo funziona fino a quando non aggiungo "time.sleep (x)" di fronte a "process.kill()" .. – user495511

+2

Questo non funziona –

9

process.terminate() non funziona quando si utilizza shell=True. Questo answer ti aiuterà.

+0

grazie mille, la tua risposta ha finito il mio debug di 3 ore – tahayk

Problemi correlati