线程名称超过15个字符?

时间:2011-02-17 08:21:35

标签: c linux unix pthreads introspection

通过使用prctl或pthread_set_name_np等函数,可以更改线程的名称。至少在Linux 2.6.38中,两个函数强制的限制是名称不能超过15个字符(NULL终止是第16个字节)。

这15个字符的限制在哪里,是否有任何(甚至非正统的)方式?

更新

正如评论中所提到的,这是由内核强加的。

定义可以在这里找到: http://lxr.linux.no/linux+v2.6.37/include/linux/sched.h#L245

2 个答案:

答案 0 :(得分:15)

15-char限制由内核完成。

struct task_struct :: comm [TASK_COMM_LEN],宽度为16字节。

如果你想增加内核,你必须重新编译内核。

答案 1 :(得分:0)

虽然在内核中设置了正常的任务名称限制,但您可以通过覆盖ps指向的内存来更改命令行参数(如argv[0]所示)。这可用于显示最多一页的其他数据。