【问题标题】:How to print list of all threads in C++ application? [closed]如何打印 C++ 应用程序中所有线程的列表? [关闭]
【发布时间】:2019-07-12 09:26:03
【问题描述】:

如何打印在 POSIX 操作系统(比如 Linux)中的 C++ 应用程序中运行的线程列表(最好是名称)?

【问题讨论】:

    标签: c++ linux multithreading logging


    【解决方案1】:

    做同样事情的其他选择:

    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过滤进程拥有的线程。
    【解决方案2】:

    您可以使用/proc/self/task 的目录列表来获取线程ID 列表。请注意,这是特定于 Linux 的;不能移植到所有 POSIX。

    您可以使用pthread_getname_np 获取每个线程的名称。线程的名称默认为程序的名称。这是 glibc 特定的功能;不能移植到所有 POSIX 甚至所有 Linux。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多