2016-11-09 1 views
0

Scénario: le sous-processus a créé un sous-processus et ainsi de suite, comment puis-je obtenir son pid?Get pid de sous-processus récursifs

J'ai utilisé subprocess.popen pour lancer le premier sous-processus, par exemple un fichier word, ce fichier word a généré un nouveau sous-processus, comment puis-je obtenir son pid?

+0

double possible de [Ouverture d'un processus avec Popen et obtenir le PID] (http://stackoverflow.com/questions/7989922/opening-a-process-with-popen- et-getting-the-pid) –

+0

avez-vous même lu la question? J'ai demandé le pid interne – MichaelK

+0

Oui, bien sûr, si vous avez le pid du processus racine, vous pouvez demander le pid imbriqué en appelant pstree depuis votre module, pstree -p $ pid (root_process_pid) | grep -o '([0-9] \ +)' | grep -o '[0-9] \ +' http://unix.stackexchange.com/questions/67668/elegantly-get-list-of-descendant-processes –

Répondre

1

En utilisant psutil:

parent = psutil.Process(parent_pid) 
children = parent.children() 
# all child pids can be accessed using the pid attribute 
child_pids = [p.pid for p in children] 
+0

du père cela n'aide pas :( child_pids semble être toujours vide (quoique ch les processus ild apparaissent) – MichaelK

+1

Ensuite, votre processus utilise une technique pour se détacher de l'enfant. Vous pouvez également utiliser psutil pour trouver le pid parent du sous-processus. Peut-être que cela aide à découvrir ce qui se passe. – languitar