首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >/proc/包含tid吗?

/proc/包含tid吗?
EN

Unix & Linux用户
提问于 2020-09-07 11:51:28
回答 1查看 1K关注 0票数 6

我有进程编号1234。此进程包含线程id 1235。

当我使用ls -l /proc时,我只看到pid (1234),但是当我使用cat /proc/1235/status打开线程状态文件时,我可以看到数据。

为什么会这样呢?

我可以直接用tid访问C代码吗?/proc/1235/mem,而不知道进程id?

EN

回答 1

Unix & Linux用户

发布于 2020-09-07 11:58:37

是的,/proc“包含”线程标识符和进程标识符的目录条目,但只有后者由getdents枚举,因此ls只显示进程标识符。这在man 5 proc中的“概述”部分中有描述,因为手册页项目第5.00版

/proc/子目录当使用/proc迭代getdents(2)时/proc/子目录是可见的(因此,当您使用ls(1)查看/proc的内容时也是可见的)。/proc/子目录/proc/子目录在使用/proc迭代getdents(2)时是不可见的(因此在使用ls(1)查看/proc内容时不可见)。为什么会这样呢?

我怀疑这是为了保持向后兼容性(对于在Linux上线程以当前形式存在之前编写的程序),并限制可伸缩性问题。

我可以直接用tid访问C代码吗?/proc/1235/mem,而不知道进程id?

是的,如果您知道tid,您可以直接访问/proc/${tid},而无需经过pid。

如果要枚举线程,可以在/proc/${tid}/task/下列出目录条目(这适用于任何线程标识符,而不仅仅是进程标识符)。

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

https://unix.stackexchange.com/questions/608297

复制
相关文章

相似问题

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