我想知道 - 如果可能的话 - 如何获得流程'祖父母(或更远)的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。
作为一个小小的旁注: 我还想知道是否有可能从下到上进行打印,这意味着最深层次的所有过程都会先打印出来。
答案 0 :(得分:0)
如何获取进程'祖父母(或更远)的pid。
这取决于您使用的操作系统,因为您在示例中使用fork()
创建新进程,我想您使用的是类Unix系统。
如果您使用Linux并且知道进程的pid,则可以从/proc/[pid]/stat
获取其父进程'pid,该文件中的第四个字段。通过这个父子链,你可以找到一个过程'所有的祖先。