这个问题与pthread ID无关,而与通常由gettid
或ptrace
获得的值有关。
Linux内核是否提供任何机制以相对有效的方式从给定的tid获得线程组ID(通常由getpid
获得)?不需要io或解析的东西吗?
唯一的方法似乎是open
/proc/TID/status
,read
将文件放入缓冲区,逐行扫描Tgid
,然后将字符串解析为无符号整数。
我希望我错过了一个系统调用,即使给定pid是在某些数据结构中间接返回的,也要返回给定pid的tgid / pid。
答案 0 :(得分:1)
似乎没有这样的系统调用。只能从/proc
中检索信息,您当前的解决方案看起来是最有效的方法。
答案 1 :(得分:1)
仅添加到已经可用的答案中。确实,在Linux上没有更好的选择。我一直在寻找更好的东西,然后发现了这个项目,该项目试图以编程方式提供更多可用的东西:
但是,这只是上游,可能是因为目前似乎很少有人真正在乎这个问题。对于高性能OS级别的跟踪应用程序和实时性来说,这主要是一个问题,而Linux才刚刚起步。
一个有趣的事实是,其他类似的操作系统也没有此问题(OpenBSD,QNX等)