首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从TID获取PID的有效方法

从TID获取PID的有效方法
EN

Stack Overflow用户
提问于 2018-09-10 15:21:15
回答 2查看 675关注 0票数 1

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

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

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

我希望我错过了一个syscall,它返回给定pid的tgid/ pid,即使id是在某个数据结构中间接返回的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-10 16:34:02

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

票数 1
EN

Stack Overflow用户

发布于 2019-03-25 19:13:07

只是对已有的答案进行补充。事实上,在Linux上没有更好的替代方案。我自己在寻找更好的东西,我发现了这个项目,它试图提供一些更有用的编程方式:

https://criu.org/Task-diag

然而,这些都不是上游的,可能是因为目前真正关心这个问题的人太少了。它主要关注高性能操作系统级跟踪应用程序和实时应用程序,这些应用程序在Linux中还处于起步阶段。

一个有趣的事实是,其他类似的OSes没有这个问题(OpenBSD,QNX,...)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52252891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档