Process 如何获取祖父母/祖先进程ID?
我想知道——如果可能的话——如何获得流程祖父母的pid(或者更进一步) 更具体地说,我希望流程在流程树中打印其深度。 例如,从以下内容开始时: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
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。通过这个父子链,您可以找到一个进程“所有祖先”