从 TID 获取 PID 的预制方法
Preformant way to get a PID from a TID
这个问题不是关于 pthread ID,而是关于通常由 gettid
或 ptrace
获得的值。
linux内核是否提供任何机制以相对有效的方式从给定的tid中获取线程组id(通常由getpid
获取)?不需要 io 或解析的东西?
唯一的方法好像是open
/proc/TID/status
,read
把文件放到一个buffer中,逐行扫描Tgid
,然后解析字符串作为无符号整数。
我希望我错过了一个系统调用 returns tgid/pid 给定 pid,即使在某些数据结构中间接返回了 id。
好像没有这个系统调用。只能从 /proc
检索信息,您当前的解决方案看起来是最有效的方法。
只是添加到已有的答案中。 Linux 确实没有更好的选择。我一直在寻找更好的东西,我发现这个项目试图以编程方式提供更有用的东西:
然而,这些都不是上游的,可能是因为目前似乎很少有人真正关心这个问题。它主要关注高性能 OS 级跟踪应用程序和实时,它们在 Linux.
中还处于起步阶段
一个有趣的事实,其他类似的 OSes 没有这个问题(OpenBSD,QNX,...)
这个问题不是关于 pthread ID,而是关于通常由 gettid
或 ptrace
获得的值。
linux内核是否提供任何机制以相对有效的方式从给定的tid中获取线程组id(通常由getpid
获取)?不需要 io 或解析的东西?
唯一的方法好像是open
/proc/TID/status
,read
把文件放到一个buffer中,逐行扫描Tgid
,然后解析字符串作为无符号整数。
我希望我错过了一个系统调用 returns tgid/pid 给定 pid,即使在某些数据结构中间接返回了 id。
好像没有这个系统调用。只能从 /proc
检索信息,您当前的解决方案看起来是最有效的方法。
只是添加到已有的答案中。 Linux 确实没有更好的选择。我一直在寻找更好的东西,我发现这个项目试图以编程方式提供更有用的东西:
然而,这些都不是上游的,可能是因为目前似乎很少有人真正关心这个问题。它主要关注高性能 OS 级跟踪应用程序和实时,它们在 Linux.
中还处于起步阶段一个有趣的事实,其他类似的 OSes 没有这个问题(OpenBSD,QNX,...)