通过使用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
答案 0 :(得分:15)
15-char限制由内核完成。
struct task_struct :: comm [TASK_COMM_LEN],宽度为16字节。
如果你想增加内核,你必须重新编译内核。
答案 1 :(得分:0)
虽然在内核中设置了正常的任务名称限制,但您可以通过覆盖ps
指向的内存来更改命令行参数(如argv[0]
所示)。这可用于显示最多一页的其他数据。