Linux下通过procfs查询进程子进程:是否需遍历所有任务?
关于通过procfs查询指定进程子进程的问题解答
你只需要查看进程ID为p的那个“特殊任务”对应的/proc/p/task/p/children文件即可,完全不需要遍历该进程的所有任务,原因如下:
- 进程的子进程属于整个进程实体,而非某个单独线程(任务)。Linux中,子进程的父进程ID(PPID)指向的是进程的PID,而非某个线程的TID。
- 同一个进程下所有线程的
children文件内容完全一致,因为它们共享同一个进程的子进程列表。不管读取该进程下哪个线程的children文件,得到的子进程ID集合都是相同的。 - 直接读取TID等于PID的那个线程的
children文件,既能获取完整的子进程列表,又能避免遍历大量任务带来的额外系统调用开销,完全满足你的需求。
内容的提问来源于stack exchange,提问作者Troels Arvin
相关产品推荐
相关产品推荐

