J'utilise MULTIPROCESSING pour trouver mes besoins. Et quand cela se passe je reçois un pid (peut-être parent, je ne sais pas comment appeler ça) alors co traite avec leur propre ID de pid et de référence du premier processus.kill processus et ses sous/co-processus en obtenant leur pid parent par script python
Maintenant, je dois tuer tous ces processus en tuant seulement le premier processus, ce qui sera la meilleure façon de le faire. CELA AUSSI DANS LA VOIE PYTHONIQUE.
Scénario est comme
ps -ef |grep py
Je reçois
2222 0001 first.py #0001 is os process
4323 2222 second.py
4324 2222 third.cgi
4324 2222 fourth.py
4325 2222 fifth.cgi
4326 2222 sixth.py
2223 0001 newfirst.py ############new first process from another script started
4327 2223 newsecond.cgi
4328 2223 newthird.py
4329 2223 newfourth.cgi
maintenant je suis en train de tuer processus par (quand un bouton d'arrêt est enfoncé)
kill -6 2222 ###from terminal
alors seulement first.py est en train d'être tué et les co-processus restants en cours d'exécution. Bien sûr, je peux tuer d'autres processus du terminal, mais je veux le faire d'une manière plus pythonique (en exécutant un script qui se déclenchera quand quelqu'un appuie sur un bouton ARRET du formulaire conçu pour exécuter des fichiers .py)
Maintenant, comment puis-je tuer tous ces co-processus dès que je tue first.py (comme je ne veux plus que ses co fonctionnent) mais l'autre newfirst.py et ses co's ne devraient pas être dérangés.
ce que je viens jusqu'à est loin
import os
pid = os.getpid()
os.system('kill -9 ' + pid)
alors comment filtrer les co-processus de ce premier numéro de processus 2222 et les tuer.
J'ai également essayé d'utiliser psutil, mais passer nom après nom à tuer n'est pas très convaincant.
J'ai vérifié la méthode subprocess.popen mais j'ai échoué et maintenant je suis hors de la logique, s'il vous plaît suggérer.
Si d'autres informations sont nécessaires, veuillez commenter.
Pour supprimer un groupe de processus avec un signal 'os.killpg (pgid, sig)' peut être utilisé. Dans votre cas 'os.killpg (pid, 9)' – Kadir