2016-11-09 113 views
0

場景:子進程創建了一個子進程等,我怎麼能得到它的pid?獲取遞歸子進程的pid

我用subprocess.popen來啓動第一個子進程,例如word文件,這個word文件生成了一個新的子進程,我怎麼能得到它的pid?

+0

[打開與POPEN的處理和獲取PID]的可能的複製(http://stackoverflow.com/questions/7989922/opening-a-process-with-popen-並得到該pid) –

+0

你甚至讀過這個問題嗎? 我問了內部pid – MichaelK

+0

是的,如果你有根進程的pid,你可以通過調用模塊中的pstree來請求嵌套的pid, 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 –

回答

1

使用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

它沒有幫助:( child_pids似乎總是空的(即使ch ild過程出現) – MichaelK

+1

然後你的過程使用一些技術從孩子分離。您也可以使用psutil來查找子流程的父pid。也許這有助於發現發生了什麼。 – languitar