从Python中的进程ID获取Parent和ChildProcess ID

时间:2013-11-29 17:58:52

标签: python process solaris rhel

我正在尝试获取我想要的进程的ppid

我使用以下代码获取pid

proc=subprocess.Popen('ps -ae | grep ruby', shell=True, stdout=subprocess.PIPE, )
output=proc.communicate()[0]
str = output.split()

现在在str[0]中,我有进程的pid说ruby,我想得到父进程ID ppid和同一进程的子进程ID。

我需要在Solaris as well as Red Hat Enterprise Linux 6.0

上运行此解决方案

有没有办法像getppid()getchildid()那样获得这个?或者我需要再次通过grep命令并拆分?

3 个答案:

答案 0 :(得分:4)

使用此代码是一个坏主意。您的代码不适用于solaris。 您可以使用'psutil'库,这样您就可以保持代码独立于操作系统。 https://github.com/giampaolo/psutil

p = psutil.Process(7055)
parent_pid = p.ppid()

答案 1 :(得分:1)

我认为os.getppid()没有任何问题。

耸肩。

http://docs.python.org/3/library/os.html#process-parameters

答案 2 :(得分:0)

答案取决于系统的ps命令。在Linux上,ps将包含带有-l标志(以及其他)的每个进程的PPID,因此ps -ale | grep ruby将包含str[3]中的ruby进程ID和ruby的PPID in str[4]