一尘不染

如何在Linux pthreads中设置线程的名称?

linux

有什么办法可以在Linux中设置线程的名称?

我的主要目的是在调试时会有所帮助,并且如果通过例如暴露该名称也很好 /proc/$PID/task/$TID/...


阅读 899

收藏
2020-06-02

共1个答案

一尘不染

prctl(2)功能与选项一起使用PR_SET_NAME(请参阅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
2020-06-02