给定子PID,如何获得父PID

时间:2016-02-14 23:22:48

标签: c fork pid

我正在开发一个项目,我有一些PID,我必须找出其中哪些是僵尸进程,然后杀死他们的父进程以杀死最初的僵尸进程。我不确定是否有任何方法可以找出给定PID的PPID是什么。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

在ps命令的源代码中,get_proc_stats中定义了一个名为proc/readproc.h的函数,其中(除其他外)返回给定pid的父pid 。您需要安装libproc-dev才能获得此功能。然后你可以这样做:

#include <proc/readproc.h>
void printppid(pid_t pid) {
    proc_t process_info;
    get_proc_stats(pid, &process_info);
    printf("Parent of pid=%d is pid=%d\n", pid, process_info.ppid);
}

这取自here。 我从来没有用过这个,但根据作者的说法,这可能会有所帮助。

答案 1 :(得分:0)

函数getppid()执行此操作:

#include <unistd.h>

int main()
{
    pid_t ppid;

    ppid = getppid();

    return (0);
}