在linux下开发的多线程系统中, 每个线程的调试和监控一直比较麻烦, 无法精准定位, 现在有了解决办法了.
int prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5);
PR_SET_NAME (since Linux 2.6.9)
Set the process name for the calling process, using the value in he location pointed to by (char *) arg2.
The name can be up to 16 bytes long, and should be null-terminated if it contains fewer bytes.
PR_GET_NAME (since Linux 2.6.11)
Return the process name for the calling process, in the buffer pointed to by (char*) arg2.
The buffer should allow space for up to 16 bytes; the returned string will be null-terminated if it is
shorter than that.
函数实现:
#include <sys/prctl.h>
int set_thread_name(const char* name)
{
if (!name) return -1;
prctl(PR_SET_NAME, name, 0, 0, 0);
return 0;
}