获取我的pid的父级的父(也称为getpppid())

时间:2013-10-01 21:27:00

标签: c linux

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

PS:我在Linux上,代码只能在Linux上运行(不是Unix,也不是其他任何变种)

1 个答案:

答案 0 :(得分:2)

你在这里。

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;
}

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(),您的程序可能没有权限读取该流程统计信息。