爲線程設置名字

http://blog.csdn.net/penzchan/article/details/10239869

 

 

在linux下開發的多線程系統中, 每個線程的調試和監控一直比較麻煩, 無法精準定位, 現在有了解決辦法了.

  1.  int prctl(int option, unsigned long arg2, unsigned long arg3,  unsigned long arg4, unsigned long arg5);  
  2.   
  3. PR_SET_NAME (since Linux 2.6.9)  
  4. Set the process name for the calling process, using the value in he location pointed to by (char *) arg2.    
  5. The name can be up to 16 bytes long, and should  be  null-terminated  if  it  contains fewer bytes.  
  6.   
  7. PR_GET_NAME (since Linux 2.6.11)  
  8. Return  the  process name for the calling process, in the buffer pointed to by (char*) arg2.    
  9. The buffer should allow space  for up  to  16 bytes; the returned string will be null-terminated if it is   
  10. shorter than that.  
 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.


函數實現:

  1. #include <sys/prctl.h>   
  2. int set_thread_name(const char* name)  
  3. {  
  4.     if (!name) return -1;  
  5.     prctl(PR_SET_NAME, name, 0, 0, 0);  
  6.     return 0;  
  7. }  
#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;
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章