pthread_setname_np(3) Library Functions Manual pthread_setname_np(3) pthread_setname_np, pthread_getname_np - / POSIX (libpthread -lpthread) #define _GNU_SOURCE /* feature_test_macros(7) */ #include int pthread_setname_np(pthread_t thread, const char *name); int pthread_getname_np(size_t size; pthread_t thread, char name[size], size_t size); pthread_create() . pthread_setname_np() . C 16 ('\0'). thread name . pthread_getname_np() . thread . name size name. name 16 . . 0 . pthread_setname_np() : ERANGE name . pthread_getname_np() : ERANGE name size . /proc/self/task/tid/comm open(2). attributes(7). +------------+------------------------------------+--------------------+ || | | +------------+------------------------------------+--------------------+ |pthread_setname_np(),| | MT-Safe | |pthread_getname_np()| | | +------------+------------------------------------+--------------------+ "_np" ( ) . glibc 2.12. pthread_setname_np() comm /proc: /proc/self/task/tid/comm. pthread_getname_np() . pthread_setname_np() pthread_getname_np(). : $ ./a.out; Created a thread. Default name is: a.out The thread name after setting it is THREADFOO. ^Z # Suspend the program [1]+ Stopped ./a.out $ ps H -C a.out -o 'pid tid cmd comm' PID TID CMD COMMAND 5990 5990 ./a.out a.out 5990 5991 ./a.out THREADFOO $ cat /proc/5990/task/5990/comm a.out $ cat /proc/5990/task/5991/comm THREADFOO #define _GNU_SOURCE #include #include #include #include #include #include #include #define NAMELEN 16 static void * threadfunc(void *parm) { sleep(5); // allow main program to set the thread name return NULL; } int main(int argc, char *argv[]) { pthread_t thread; int rc; char thread_name[NAMELEN]; rc = pthread_create(&thread, NULL, threadfunc, NULL); if (rc != 0) errc(EXIT_FAILURE, rc, "pthread_create"); rc = pthread_getname_np(thread, thread_name, NAMELEN); if (rc != 0) errc(EXIT_FAILURE, rc, "pthread_getname_np"); printf("Created a thread. Default name is: %s\n", thread_name); rc = pthread_setname_np(thread, (argc > 1) ? argv[1] : "THREADFOO"); if (rc != 0) errc(EXIT_FAILURE, rc, "pthread_setname_np"); sleep(2); rc = pthread_getname_np(thread, thread_name, NAMELEN); if (rc != 0) errc(EXIT_FAILURE, rc, "pthread_getname_np"); printf("The thread name after setting it is %s.\n", thread_name); rc = pthread_join(thread, NULL); if (rc != 0) errc(EXIT_FAILURE, rc, "pthread_join"); printf("Done\n"); exit(EXIT_SUCCESS); } prctl(2), pthread_create(3), pthreads(7) 3 . . : . 6.18 8 2026 pthread_setname_np(3)