2016-11-09 1 views
0

Szenario: Subprozess erstellt einen Subprozess und so weiter, wie kann ich es ist pid?Get pid rekursive Subprozesse

Ich habe subprocess.popen verwendet, um den ersten Subprozess zu starten, zum Beispiel Word-Datei, diese Word-Datei erzeugt einen neuen Subprozess, wie kann ich es bekommen, ist es pid?

+0

Mögliche Duplikat [eines Prozesses mit Popen Öffnen und bekommen die PID] (http://stackoverflow.com/questions/7989922/opening-a-process-with-popen- und-bekommen-die-pid) –

+0

hast du überhaupt die frage gelesen? Ich fragte nach der inneren pid – MichaelK

+0

Ja sicher, wenn Sie die PID des Root-Prozesses haben, können Sie für die verschachtelten PIDs fragen, indem Sie pstree von Ihrem Modul, 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 –

Antwort

1

Mit 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

hilft es nicht :( child_pids scheint immer leer zu sein (obwohl ch ild Prozesse erscheinen) – MichaelK

+1

Dann verwendet Ihr Prozess eine Technik, um sich vom Kind zu lösen. Sie können auch psutil verwenden, um die Eltern-PID des Subprozesses zu finden. Vielleicht hilft dies zu entdecken, was passiert. – languitar