Название темы длиннее 15 символов? - PullRequest
13 голосов
/ 17 февраля 2011

Используя такие функции, как 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 ]

15 голосов
/ 17 февраля 2011

15-символьный предел устанавливается ядром.

struct task_struct :: comm [TASK_COMM_LEN] шириной 16 байт.

Вы должны перекомпилировать ядро, если хотите увеличитьчто.

0 голосов
/ 17 февраля 2011

Хотя в ядре установлен нормальный предел имени задачи, вы можете изменить параметры командной строки (как показано в ps), перезаписав память, указанную argv[0]. Это может быть использовано для отображения дополнительных данных размером до одной страницы.

...