2010-07-01 56 views
11

我正在使用启动各种子进程的第三方库。当出现异常时,我想杀死所有的子进程。我怎样才能得到一个孩子的pid列表?如何列出python中的所有子进程?

+0

可能有助于告诉我们您的操作系统,因为这将是平台相关 – 2010-07-02 01:00:01

+0

不POSIX帮助你吗?我想有些人也想知道Windows的答案。 – Rowan 2010-07-07 23:09:12

+0

请参阅:http://stackoverflow.com/a/4229404/376587 – 2014-03-11 15:20:53

回答

1

创建它们时记录所有子进程的pid通常更安全。没有符合Posix标准的方法来列出子PID。我知道这可以用PS工具来完成。

+2

是的,我预计。问题在于它不是我创建流程,而是第三方库。好吧。这不是一个表演者。 – Rowan 2010-07-03 18:44:34

+0

我可以接受吗? – 2010-09-21 18:21:50

+1

其实你的答案不是解决方案。我真的需要知道如何获得''psutil.Process''来给予递归''memory_info''和''cpu_percent'',但是我对子进程的调用实际上打开了其他子进程(至少4或5个级别)没有办法跟踪所有的PID。 – Natim 2012-10-24 17:12:41

10

你不能总是记录所有的子流程,因为他们创建的,因为他们可以反过来创建新的流程,你没有意识到。然而,这是非常简单的使用psutil找到他们:

import psutil 

current_process = psutil.Process() 
children = current_process.children(recursive=True) 
for child in children: 
    print('Child pid is {}'.format(child.pid)) 
+0

我认为_parent_和_current_process_是相同的?) – dyomas 2016-08-07 13:29:22

+0

是的,编辑更正。谢谢@dyomas。 – 2016-08-08 18:19:45

相关问题