有什么办法可以在Linux中设置线程的名称?
我的主要目的是在调试时会有所帮助,并且如果通过例如暴露该名称也很好 /proc/$PID/task/$TID/...
/proc/$PID/task/$TID/...
将prctl(2)功能与选项一起使用PR_SET_NAME(请参阅docs)。
prctl(2)
PR_SET_NAME
请注意,旧版本的文档有些令人困惑。他们说
设置调用进程的进程名称
但是由于线程是Linux上的轻量级进程(LWP),因此在这种情况下,一个线程就是一个进程。
您可以使用ps -o cmd或使用以下命令查看线程名称:
ps -o cmd
cat /proc/$PID/task/$TID/comm
或在之间()的cat /proc/$PID/task/$TID/stat:
()
cat /proc/$PID/task/$TID/stat
4223 (kjournald) S 1 1 1 0...
或从GDB info threads双引号之间:
info threads
* 1 Thread 0x7ffff7fc7700 (LWP 6575) "kjournald" 0x00007ffff78bc30d in nanosleep () at ../sysdeps/unix/syscall-template.S:84