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

Process 如何获取祖父母/祖先进程ID?,process,parent-child,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 pr

我想知道——如果可能的话——如何获得流程祖父母的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

请注意: 我还想知道是否有可能从下到上进行打印,这意味着最深层的所有流程都将首先打印

如何获取进程的祖辈(或更进一步)的pid

这取决于您使用的操作系统,因为在您的示例中使用
fork()
来创建新进程,所以我假设您使用的是一些类似Unix的系统

如果您使用的是Linux,并且知道进程的pid,那么可以从该文件中的第四个字段获取其父进程的pid。通过这个父子链,您可以找到一个进程“所有祖先”