LINUX.ORG.RU

Изменить имя потока


0

1

Возможно ли в Linux как-то задавать имена для потоков запускаемых через pthread_create, чтобы в списке процессов(ps/htop) потом можно было видеть различные имена для различных потоков.? А то неудобно когда все потоки имеют такое же имя как и исполняемый файл + параметры запуска



Последнее исправление: slesh (всего исправлений: 1)
Ответ на: комментарий от slesh
panda-pc:/tmp # cat yyy.c
#include <sys/prctl.h>
#include <pthread.h>
void *start(void *arg)
{
        prctl(PR_SET_NAME, arg);
        pause();
        return NULL;
}

int main(void)
{
        pthread_t p1, p2;
        pthread_create(&p1, NULL, start, "prctl-one");
        pthread_create(&p2, NULL, start, "prctl-two");
        pause();
        return 0;
}


panda-pc:/tmp # gcc yyy.c -o prctl -lpthread
panda-pc:/tmp # ./prctl 
^Z
[1]+  Stopped                 ./prctl
panda-pc:/tmp # ps -eLo pid,tid,comm|grep prctl
27474 27474 prctl
27474 27475 prctl-one
27474 27476 prctl-two

Murr ★★
()
Ответ на: комментарий от ttnl

PR_SET_NAME (since Linux 2.6.9) Set the process name for the calling process, using the value in the 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.

anonymous
()
Ответ на: комментарий от Murr

Собственно говоря так и делал, но увы это работает только в ps а хотелось бы чтобы работало в htop (для удобного анализа загруженности каждым потоком)

slesh
() автор топика
Ответ на: комментарий от slesh

это работает только в ps

это на уровне ядра работает

хотелось бы чтобы работало в htop

вопросы к htop :)

true_admin ★★★★★
()
Ответ на: комментарий от slesh

> работает только в ps а хотелось бы чтобы работало в htop

про htop ничего не знаю.

вообще-то, имя + параметры + env общие для всех потоков.
это просто кусок памяти, создаваемый во время exec.
в ядре виден по mm->arg_start. /proc/pid/cmdline это
показывает.

само приложение, понятное дело, тоже может туда писать,
это просто область argv/envp.

PR_SET_NAME меняет task->comm[16], это per-thread, и это
показывается в stat/status.

так что, в зависимости от того, куда htop смотрит. по уму,
должен смотреть и то, и другое.

idle ★★★★★
()
Ответ на: комментарий от Murr

Спасибо. Понял в чем ошибка была, в репозиториях была старая версия htop в которой не было поддержки show custom thread names. Собрал последнюю версию из исходников и всё заработало.

slesh
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.