代码之家  ›  专栏  ›  技术社区  ›  hasen

Linux:以编程方式获取另一个进程的父PID?

  •  22
  • hasen  · 技术社区  · 15 年前

    我试过谷歌,但发现 getppid() 它获取 现在的 过程。

    我需要类似的东西 getppid(some_other_pid) 有这样的事吗?基本上获取某个进程的PID并返回父进程的PID。

    5 回复  |  直到 8 年前
        1
  •  27
  •   Arkaitz Jimenez    15 年前

    我认为最简单的方法是打开“/proc”并解析内容。

    您会发现ppid是/proc/pid/stat的第四个参数

        2
  •  11
  •   Samuel Kerrien    12 年前

    或者从一个unix shell中,您可以尝试 ps -p <child_pid> -o ppid=

        3
  •  5
  •   Pejman    8 年前

    我迟到了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;
    }
    

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

        4
  •  2
  •   Patryk    9 年前

    你可以看看 sysctl() 系统调用和 this 链接。

        5
  •  1
  •   Saurabh Sengar    9 年前

    从proc entry获取它的另一种方法:

    cat /proc/<pid>/status | grep PPid: