Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 获取我的pid的父对象的父对象(也称为getpppid())_C_Linux - Fatal编程技术网

C 获取我的pid的父对象的父对象(也称为getpppid())

C 获取我的pid的父对象的父对象(也称为getpppid()),c,linux,C,Linux,有没有办法得到我的pid的父对象的父对象?有getpid()和getppid(),我正在寻找“getpppid()” PS:我在Linux上,代码将只在Linux上运行(不是Unix或任何其他变体)给你 pid_t getpppid(void) { char exe[256],proc[81],state; FILE *fp; int pid,ppid=-1; snprintf(proc,81,"/proc/%d/stat",(int)getppid());

有没有办法得到我的pid的父对象的父对象?有
getpid()
getppid()
,我正在寻找“
getpppid()

PS:我在Linux上,代码将只在Linux上运行(不是Unix或任何其他变体)

给你

pid_t getpppid(void)
{
    char exe[256],proc[81],state;
    FILE *fp;
    int pid,ppid=-1;

    snprintf(proc,81,"/proc/%d/stat",(int)getppid());
    fp=fopen(proc,"r");
    if(fp)
    {
        fscanf(fp,"%d %s %c %d",&pid,exe,&state,&ppid);
        fclose(fp);
    }
    return (pid_t)ppid;
}


编辑:请记住,如果您的父进程或您的进程自启动以来调用了setuid(),您的程序可能没有读取该进程状态的权限。

我之前也遇到过同样的问题-我认为没有生成值的函数,但您可以遍历
/proc//status
并从那里读取PPID。但是,如果你是在分岔,你可以尽早存储你自己的pid。请记住,阅读
/proc//stat
-有关每列读取内容的详细信息,以及如何
scanf
它。我只是在看linuxforums中找到的完全相同的代码:)