C++ 进程内正在运行的线程的名称
我有一个父进程,它为每个客户端创建一个线程,如下所示:C++ 进程内正在运行的线程的名称,c++,linux,multithreading,shell,C++,Linux,Multithreading,Shell,我有一个父进程,它为每个客户端创建一个线程,如下所示: pthread_create(&thread, NULL, interact, bundle); 然后,我将每个踏板重命名为: pthread_setname_np(thread, "some name"); 在我的linux终端中运行命令“ps-uH-p”,我将获得当前在父进程中运行的线程详细信息,但它没有提供我刚才分配给它们的名称 是否有任何特定的命令来运行和获取线程名称?正如pthread\u setname\u np
pthread_create(&thread, NULL, interact, bundle);
然后,我将每个踏板重命名为:
pthread_setname_np(thread, "some name");
在我的linux终端中运行命令“ps-uH-p”,我将获得当前在父进程中运行的线程详细信息,但它没有提供我刚才分配给它们的名称
是否有任何特定的命令来运行和获取线程名称?正如
pthread\u setname\u np
中所暗示的那样,新名称可以作为ps
格式说明符comm
访问,但不能作为args
或command
访问(通常是打印的):
ps H-C-o'pid tid args comm'
说明差异(改编自man
页面)。不过,我还没有找到一份明确讨论这一点的好文档
这里,
是程序二进制文件的名称。正如pthread\u setname\u np
中所暗示的,新名称可以作为ps
格式说明符comm
访问,但不能作为args
或命令
访问(通常是打印的):
ps H-C-o'pid tid args comm'
说明差异(改编自man
页面)。不过,我还没有找到一份明确讨论这一点的好文档
这里,
是程序二进制文件的名称。@Mat感谢您的回复。不幸的是,我们不能在代码中使用pthread_getname_np,我们必须通过Linux shell命令获取线程名称。请阅读手册页。@Mat,我找到了您提到的示例。谢谢你的帮助response@Mat谢谢你的回复。不幸的是,我们不能在代码中使用pthread_getname_np,我们必须通过Linux shell命令获取线程名称。请阅读手册页。@Mat,我找到了您提到的示例。谢谢你的回复。因此,如果我将“threadname”替换为我的assign name并运行上面的命令,我应该得到线程的pid、tid、args和comm属性?如上所述:它应该是二进制文件的原始名称。我使用您和Mat的指示使它工作。再次感谢汉克斯。因此,如果我将“threadname”替换为我的assign name并运行上面的命令,我应该得到线程的pid、tid、args和comm属性?如上所述:它应该是二进制文件的原始名称。我使用您和Mat的指示使它工作。再次感谢
ps H -C <cmd name> -o 'pid tid args comm'