有没有办法在Linux中设置线程的名称?

我的主要目的是,它在调试时会很有帮助,而且如果通过例如/proc/$PID/task/$TID/...公开这个名称也很好

推荐答案

prctl(2)功能与选项PR_SET_NAME一起使用(参见the docs).

请注意,旧版本的文档有点令人困惑.他们说

设置调用进程的进程名称

但是由于线程在Linux上是轻量级进程(LWP),因此在本例中一个线程就是一个进程.

您可以看到带有ps -o cmd或以下的线程名称:

cat /proc/$PID/task/$TID/comm

或介于cat /proc/$PID/task/$TID/stat()之间:

4223 (kjournald) S 1 1 1 0...

或者从GDB info threads的双引号中:

* 1    Thread 0x7ffff7fc7700 (LWP 6575) "kjournald" 0x00007ffff78bc30d in nanosleep () at ../sysdeps/unix/syscall-template.S:84                                                                                  

C++相关问答推荐

在32位处理器上优化53—32位模计算>

在C语言中使用scanf()时我无法理解的警告

C编译器是否遵循restrict的正式定义?

如何在C客户端应用程序的ClientHello消息中添加自定义扩展?

Make Node函数.S有什么问题吗?

CC2538裸机项目编译但不起作用

在移动数组元素时获得意外输出

添加函数会 destruct 嵌入式C代码(无IDE)

为什么编译器不能简单地将数据从EDI转移到EAX?

如何将两个uint32_t值交织成一个uint64_t?

如何将大写/小写土耳其字母相互转换?

从C中的函数返回静态字符串是不是一种糟糕的做法?

为什么我的旧式&q;函数在传递浮点数时会打印2?

强制GCC始终加载常量(即只读),即使启用了优化

挥发性语义的形式化理解

当读取可能会阻塞管道中的父进程时,为什么要等待子进程?

在C中,为什么这个带有递增整数的main函数从不因溢出而崩溃?

如何使用 VLA 语法使用 const 指针声明函数

C 中的变量参数

C 程序调用 malloc 导致总线错误?