Thread name longer than 15 chars?

送分小仙女□ 提交于 2019-12-18 14:49:22

问题


By using functions like prctl, or pthread_set_name_np it's possible to change the name of a thread. The limit both functions imposes, at least in Linux 2.6.38, is that the name cannot be longer than 15 characters (NULL termination being the 16th byte).

Where is this 15 character limit imposed, and is there any (even unorthodox) way around it?

Update:

As mentioned in the comments, this is imposed by the kernel.

The definition can be found here: http://lxr.linux.no/linux+v2.6.37/include/linux/sched.h#L245


回答1:


15-char limit is done by kernel.

struct task_struct::comm[TASK_COMM_LEN] which is 16-byte wide.

You have to recompile kernel, if you want to increase that.




回答2:


Although the normal task name limit is set in the kernel, you can change your command line parameters (as shown in ps) by overwriting the memory pointed to by argv[0]. This can be used to display additional data of up to one page in size.



来源:https://stackoverflow.com/questions/5026531/thread-name-longer-than-15-chars

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!