linux:以编程方式获取另一个进程的父pid?

has*_*sen 26 linux operating-system process

我试过谷歌,但发现getppid()哪个获得当前进程的父pid .

我需要类似的东西getppid(some_other_pid),有这样的东西吗?基本上取一些进程的pid并返回父进程'pid.

Ark*_*nez 31

我认为最简单的事情是打开"/ proc"并解析内容.

你会发现ppid是/ proc/pid/stat的第4个参数

  • 4参数en/proc/pid/stat (5认同)
  • 如果有人正在搜索即用型代码,我举了一个例子:https://gist.github.com/fclairamb/a16a4237c46440bdb172 (2认同)

Sam*_*ien 13

或者从unix shell中你可以试试 ps -p <child_pid> -o ppid=


Pej*_*man 5

我迟到了7年,但对于任何可能偶然发现这个问题的人来说,这是OS X上的另一种解决方案.这里发布的其他答案都是正确的并且sysctl()可以完成这项工作,但你也可以用它proc_pidinfo来获取大量有用的信息关于一个过程.

#include <libproc.h>

int getppid(const pid_t pid)
{
    proc_bsdinfo info;
    proc_pidinfo(pid, PROC_PIDTBSDINFO, 0, &info, sizeof(info));
    return info.pbi_ppid;
}
Run Code Online (Sandbox Code Playgroud)

显然,需要进行额外的错误检查.