如何打印Linux上进程拥有的所有线程的线程ID
Posted
技术标签:
【中文标题】如何打印Linux上进程拥有的所有线程的线程ID【英文标题】:How to print thread id of all threads a process on linux has 【发布时间】:2016-07-26 16:19:29 【问题描述】:我知道如何在线程上下文中执行时打印线程 ID,但我想打印进程产生的所有线程 ID。我需要将其与 strace 输出关联以进行调试。
如何获取当前线程ID: pid_t x = 系统调用(__NR_gettid);
【问题讨论】:
【参考方案1】:来自https://unix.stackexchange.com/a/901/134332
对于每个进程,/proc/12345
中提供了大量信息,其中12345
是进程 ID。每个线程的信息在/proc/12345/task/67890
中可用,其中67890
是内核线程ID。这是 ps、top 和其他工具获取信息的地方。
【讨论】:
【参考方案2】:您可以读取虚拟的/proc
文件系统。遍历/proc/self/task
中的目录名。
if(DIR* dir = opendir("/proc/self/task"))
while (dirent* entry = readdir(dir))
if (entry->d_name[0] != '.')
std::cout << entry->d_name;
closedir(dir);
【讨论】:
以上是关于如何打印Linux上进程拥有的所有线程的线程ID的主要内容,如果未能解决你的问题,请参考以下文章