从TID获取PID的预制方式

时间:2018-09-10 07:21:15

标签: linux process task system-calls

这个问题与pthread ID无关,而与通常由gettidptrace获得的值有关。

Linux内核是否提供任何机制以相对有效的方式从给定的tid获得线程组ID(通常由getpid获得)?不需要io或解析的东西吗?

唯一的方法似乎是open /proc/TID/statusread将文件放入缓冲区,逐行扫描Tgid,然后将字符串解析为无符号整数。

我希望我错过了一个系统调用,即使给定pid是在某些数据结构中间接返回的,也要返回给定pid的tgid / pid。

2 个答案:

答案 0 :(得分:1)

似乎没有这样的系统调用。只能从/proc中检索信息,您当前的解决方案看起来是最有效的方法。

答案 1 :(得分:1)

仅添加到已经可用的答案中。确实,在Linux上没有更好的选择。我一直在寻找更好的东西,然后发现了这个项目,该项目试图以编程方式提供更多可用的东西:

https://criu.org/Task-diag

但是,这只是上游,可能是因为目前似乎很少有人真正在乎这个问题。对于高性能OS级别的跟踪应用程序和实时性来说,这主要是一个问题,而Linux才刚刚起步。

一个有趣的事实是,其他类似的操作系统也没有此问题(OpenBSD,QNX等)

相关问题