如何打印linux上进程拥有的所有线程的线程id
How to print thread id of all threads a process on linux has
我知道如何在线程上下文中执行时打印线程id,但我想打印进程生成的所有线程id。我需要将其与strace输出关联起来进行调试。
如何获取当前线程id:
pid_t x=系统调用(__NR_gettid);
来源https://unix.stackexchange.com/a/901/134332
对于每个进程,在/proc/12345
中有很多信息可用,其中12345
是进程ID。在/proc/12345/task/67890
中有关于每个线程的信息可用,67890
是内核线程ID。这是ps、top和其他工具获取信息的地方。
您可以读取虚拟/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);
}
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 在C++中使用cURL和多线程
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在cuda线程之间共享大量常量数据
- 如何将元素添加到数组的线程安全函数?
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- condition_variable、引用和线程:谁拥有锁?
- 让线程拥有它C++运行的函子
- 在另一个 QThread 上运行成员方法时,无法将事件发送到其他线程拥有的对象
- QT:QT无法将事件发送到另一个线程拥有的对象 - 原因
- 为什么我的程序在拥有线程的情况下生成LdrpLoaderLock死锁
- 如何在英特尔TBB中拥有长时间等待的线程
- C++线程:可以lock_guard拥有一个unique_lock所拥有的互斥对象
- C++-初始化由不同线程拥有的对象的两个副本
- 在应用程序中拥有大量线程会适得其反
- 在窗口关闭(或其拥有线程消失)时收到通知
- 如何打印linux上进程拥有的所有线程的线程id
- 我如何避免许多线程锁在互斥锁(拥有)的线程睡眠