有没有办法获得我的pid父母的父母?有getpid()
和getppid()
,我正在寻找“getpppid()
”
答案 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(),您的程序可能没有权限读取该流程统计信息。