Comment envoyer un Ctrl-C pour traiter ou tuer un processus avec des processus fils?Sous-processus python.Popen kill processus avec des processus enfants
Exemple de mon code (python 2.7):
# --*-- coding: utf-8 --*--
import subprocess
import os
import signal
proc = subprocess.Popen(['ping localhost'],shell=True,stdout=subprocess.PIPE)
print proc.pid
a = raw_input()
os.killpg(proc.pid, signal.SIGTERM)
Je vois les processus suivants quand je lance le programme:
user 16078 0.0 0.0 4476 916 pts/6 S+ 14:41 0:00 /bin/sh -c ping localhost
user 16079 0.0 0.0 8628 1908 pts/6 S+ 14:41 0:00 ping localhost
sortie du programme:
16078
Après raw_input:
Traceback (most recent call last):
File "subproc2.py", line 10, in <module>
os.killpg(proc.pid, signal.SIGTERM)
OSError: [Errno 3] No such process
Je veux tuer processus pid 16078 et pid 16079.
Comment puis-je faire et ce que le bug dans le programme? Appréciez l'aide.
Merci! L'erreur a disparu et le processus principal "/ bin/sh -c ping localhost" a été supprimé. Mais le processus "ping localhost" est resté. Est-il possible de tuer les deux processus? –
Votre script avec ma correction va générer un seul processus "ping" et à la fin du programme, il sera tué. Tuez tous les processus ping et vérifiez à nouveau. –
Merci! code "os.killpg (os.getpid(), signal.SIGTERM)" travaille pour moi! –