【发布时间】:2019-07-12 09:26:03
【问题描述】:
如何打印在 POSIX 操作系统(比如 Linux)中的 C++ 应用程序中运行的线程列表(最好是名称)?
【问题讨论】:
标签: c++ linux multithreading logging
如何打印在 POSIX 操作系统(比如 Linux)中的 C++ 应用程序中运行的线程列表(最好是名称)?
【问题讨论】:
标签: c++ linux multithreading logging
做同样事情的其他选择:
1) 如果你有应用名称
使用ps -C <application name> -T
-C 表示命令名应该跟在它后面-T 列出所有带有 SPID 的线程2) 如果你有进程 ID,
使用ps -p <process id> -T
-p 表示进程 ID 应该跟在它后面-T 列出所有带有 SPID 的线程【讨论】:
-e和grep,使用-p $my_pid让ps过滤进程拥有的线程。
您可以使用/proc/self/task 的目录列表来获取线程ID 列表。请注意,这是特定于 Linux 的;不能移植到所有 POSIX。
您可以使用pthread_getname_np 获取每个线程的名称。线程的名称默认为程序的名称。这是 glibc 特定的功能;不能移植到所有 POSIX 甚至所有 Linux。
【讨论】: