我想知道 - 如果可能的话 - 如何获取进程的祖父母(或更进一步)的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/proc/[pid]/stat http://man7.org/linux/man-pages/man5/proc.5.html,该文件中的第四个字段。通过这个父子链,你可以找到一个进程的所有祖先。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)