我知道如何在线程的上下文中执行时打印线程ID,但我想打印进程已生成的所有线程ID。我需要这个与strace输出相关联以进行调试。
如何获取当前线程ID:
pid_t x =系统调用(__ NR_gettid);
答案 0 :(得分:1)
来自https://unix.stackexchange.com/a/901/134332
对于每个流程,/proc/12345
中提供了大量信息,其中12345
是流程ID。有关每个线程的信息可在/proc/12345/task/67890
中获得,其中67890
是内核线程ID。这是ps,top和其他工具获取信息的地方。
答案 1 :(得分:1)
您可以阅读虚拟/proc
文件系统。迭代/proc/self/task
中的dirnames。
if(DIR* dir = opendir("/proc/self/task")) {
while (dirent* entry = readdir(dir))
if (entry->d_name[0] != '.')
std::cout << entry->d_name;
closedir(dir);
}