Voici ma pensée:
Tout d'abord, j'ai créé un processus en utilisant un sous-processus.
Deuxièmement, après un certain temps, j'ai essayé de le tuer par 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)
Cependant, "proc1" existe toujours après Popen.kill (). Des experts pourraient-ils me dire comment résoudre ce problème? J'apprécie vos considérations.
Grâce aux commentaires de tous les experts, j'ai fait tout ce que vous avez recommandé, mais le résultat reste le même.
proc1.kill() #it sill cannot kill the proc1
os.kill(proc1.pid, signal.SIGKILL) # either cannot kill the proc1
Merci tout de même.
Et j'attends toujours votre précieuse expérience pour résoudre ce problème délicat.
Dans votre code, il devrait être
proc1.kill()
kill
ou terminate
sont des méthodes de l'objet Popen
qui envoie le signal signal.SIGKILL
au processus.
process.terminate () ne fonctionne pas lors de l'utilisation de Shell=True
. Cette réponse vous aidera.
Utilisez uniquement la méthode Popen
kill
process = subprocess.Popen(
task.getExecutable(),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
Shell=True
)
process.kill()
Que diriez-vous d'utiliser os.kill? Voir les documents ici: http://docs.python.org/library/os.html#os.kill