当前位置: 首页 > 面试题库 >

如何在Linux中命名线程?

师曦
2023-03-14
问题内容

我有一个用C / C++编写的多线程Linux应用程序。我为线程选择了名称。为了帮助调试,我希望这些名称在GDB,“顶部”等中可见。这可能吗?如果可以,怎么办?

(有很多[原因可以知道线程名称。现在我想知道哪个线程占用了50%的CPU(由“ top”报告)。在调试时,我经常需要切换到其他线程-目前,我必须做“ thread apply all bt”,然后浏览回溯输出的页面以找到正确的线程。

该视窗解决方案就在这里
; 什么是Linux?


问题答案:

Posix线程?

这显然不会编译,但是会给您一个去哪里狩猎的想法。我什至不确定它的PR_命令正确,但是我认为是。有一阵子了…

  #include <sys/prctl.h>
  prctl(PR_SET_NAME,"<null> terminated string",0,0,0)


 类似资料:
  • 问题内容: 有什么办法可以在Linux中设置线程的名称? 我的主要目的是在调试时会有所帮助,并且如果通过例如暴露该名称也很好 问题答案: 将功能与选项一起使用(请参阅docs)。 请注意,旧版本的文档有些令人困惑。他们说 设置调用进程的进程名称 但是由于线程是Linux上的轻量级进程(LWP),因此在这种情况下,一个线程就是一个进程。 您可以使用或使用以下命令查看线程名称: 或在之间的: 或从GD

  • 问题内容: 我有一个使用该框架的Java应用程序,并且我的代码看起来像这样 我的理解是,JVM会在内部创建5个线程的池。现在,当我在探查器中检查执行情况时,会得到类似的信息。 , 我需要一种方法来区分由我创建的和由服务器创建的 。 我在想,如果我可以命名线程池,它应该可以解决问题,但是看不到任何允许我执行此操作的API。 提前致谢。 问题答案: 您可以将自己的ThreadFactory传递给Sch

  • 问题内容: 我正在使用ExecutorService线程池执行Callable Object。我想给这个线程起个名字。 更具体地说,在旧版本中,我这样做了- 我在log4j日志记录中使用线程名,这在进行故障排除时会很有帮助。现在,我将代码从Java 1.4迁移到Java 1.6。我已经写了这个(下面给出)-但是我不知道如何给这个线程命名。 请给我一些想法给这个线程命名? 问题答案: 您可以使用重载

  • 问题内容: 我想创建两个文件的差异。我尝试在Java中搜索可完成此操作的代码,但是没有找到任何简单的代码/实用程序代码。因此,我想如果我能以某种方式从我的Java代码中运行linux diff / sdiff命令并使它返回一个存储diff的文件,那就太好了。 假设有两个文件fileA和fileB。我应该能够通过我的Java代码将它们的差异存储在名为fileDiff的文件中。然后从fileDiff提

  • 本文向大家介绍如何在Linux中使用diff命令,包括了如何在Linux中使用diff命令的使用技巧和注意事项,需要的朋友参考一下 diff命令逐行分析并显示两个文件之间的更改列表。作为一种特殊情况,diff将标准输入的副本与其自身进行比较。本文介绍“如何在Linux中使用diff命令。 “ diff”命令的期货– 识别一个文件版本之间的更改 比较两个配置或程序文件 创建一个可以与Linux /

  • 问题内容: 在使用以下代码初始化时,我拼错了名称: 我实际上打算用名称创建环境。尝试将文件夹重命名为时,我发现这没有太大帮助。激活环境的名称仍重命名旧的。 我想知道如何重命名环境? 问题答案: 默认情况下,virtualenv不支持环境重命名。仅删除virtualenv目录并使用正确的名称创建一个新目录是更安全的。您可以通过以下方式做到这一点: 激活您的virtualenv: 创建当前安装的软件包