【问题标题】:How to print thread id of all threads a process on linux has如何打印Linux上进程拥有的所有线程的线程ID
【发布时间】:2016-07-26 16:19:29
【问题描述】:

我知道如何在线程上下文中执行时打印线程 ID,但我想打印进程产生的所有线程 ID。我需要将其与 strace 输出关联以进行调试。

如何获取当前线程ID:
pid_t x = 系统调用(__NR_gettid);

【问题讨论】:

    标签: c++ linux multithreading


    【解决方案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);
      }
      

      【讨论】:

        猜你喜欢
        • 2011-09-26
        • 1970-01-01
        • 1970-01-01
        • 2011-08-10
        • 1970-01-01
        • 2015-06-12
        • 2015-05-24
        • 1970-01-01
        • 2018-03-12
        相关资源
        最近更新 更多