【问题标题】:Name of running threads inside a process进程内正在运行的线程的名称
【发布时间】:2013-11-30 12:23:50
【问题描述】:

我有一个父进程,它为每个客户端创建一个线程,如下所示:

pthread_create(&thread, NULL, interact, bundle);


然后我将每个胎面重命名为:

pthread_setname_np(thread, "some name");

在我的 linux 终端中运行命令“ps uH p”,我将获得当前在父进程中运行的线程详细信息,但它没有提供我刚刚分配给它们的名称。


是否有任何特定的命令可以运行并获取线程名称?

【问题讨论】:

  • @Mat 感谢您的回复。不幸的是,我们不能在代码中使用 pthread_getname_np,我们必须通过 Linux shell 命令获取线程名称。
  • 好吧,阅读手册页。
  • @Mat,我找到了您所指的示例。感谢您的回复

标签: c++ linux multithreading shell


【解决方案1】:

正如pthread_setname_np 中所暗示的,新名称可以作为ps 格式说明符comm 访问,但不是argscommand(通常是打印的):

ps H -C <cmd name> -o 'pid tid args comm'

说明了差异(改编自 man 页面)。不过,我还没有找到明确讨论这个问题的好文档。

这里,&lt;cmd name&gt; 是您的程序二进制文件的名称。

【讨论】:

  • 谢谢。所以如果我用我的分配名称替换'threadname'并运行上面的命令,我应该得到我的线程的pid、tid、args和comm属性?
  • 上面的固定:它应该是二进制文件的原始名称。
  • 我按照你和 Mat 的指示让它工作了。再次感谢
猜你喜欢
  • 2011-03-02
  • 2018-02-28
  • 1970-01-01
  • 2014-07-27
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
相关资源
最近更新 更多