从TID获取PID的预先方式

问题描述 投票:1回答:2

这个问题不是关于pthread ID,而是关于通常由gettidptrace获得的值。

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

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

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

linux process task system-calls
2个回答
1
投票

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


1
投票

只是添加已经可用的答案。事实上,在Linux上没有更好的选择。我自己正在寻找更好的东西,我发现这个项目试图以编程方式提供更多可用的东西:

https://criu.org/Task-diag

然而,没有什么是上游的,可能是因为目前似乎没有人真正关心这个问题。它主要是高性能操作系统级跟踪应用程序和实时的关注点,它们刚刚在Linux中处于起步阶段。

一个有趣的事实,其他类似的操作系统没有这个问题(OpenBSD,QNX,...)

© www.soinside.com 2019 - 2024. All rights reserved.