如何获得祖父母/祖先进程ID?

时间:2014-03-03 22:35:00

标签: process parent-child

我想知道 - 如果可能的话 - 如何获得流程'祖父母(或更远)的pid。

更具体地说,我希望一个进程在进程树中打印其深度。 例如,从以下开始:

int main() {
    int creator_id = (int) getpid();
    pid_t pid1 = fork();
    pid_t pid2 = fork();
    pid_t pid3 = fork();        

    //print depth in process tree of each process

    return 0;
}

根据我的理论,这棵树看起来像这样:

               0
              /|\ 
             / | \
            /  |  \
           0   0   0
          / \  |            
         0   0 0  
        /            
       0

所以我的第一个想法是以某种方式看到我必须经常上去,直到找到创作者的pid。

作为一个小小的旁注: 我还想知道是否有可能从下到上进行打印,这意味着最深层次的所有过程都会先打印出来。

1 个答案:

答案 0 :(得分:0)

  

如何获取进程'祖父母(或更远)的pid。

这取决于您使用的操作系统,因为您在示例中使用fork()创建新进程,我想您使用的是类Unix系统。

如果您使用Linux并且知道进程的pid,则可以从/proc/[pid]/stat获取其父进程'pid,该文件中的第四个字段。通过这个父子链,你可以找到一个过程'所有的祖先。