C 获取我的pid的父对象的父对象(也称为getpppid())
有没有办法得到我的pid的父对象的父对象?有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());
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中找到的完全相同的代码:)