Pull to refresh

Comments 16

Копирование строки в argv[0] это не самый гуманный вариант изменения имени процесса - можно запросто затереть энвайронмент.
Для линуксов позже 2.6.9 лучше использовать prctl

#include <sys/prctl.h>

prctl(PR_SET_NAME, "hello world");


Для FreeBSD есть setproctitle.
Спасибо.
Да писать много в argv[0] не хорошо.
Сейчас я использую оба метода - и argv[0] и prctl - дело в том, что одного не достаточно, т.к. top и ps берут инфу из разных мест. Выходит, что в одном переименовано, а в другом нет.
Не подскажете во FreeBSD есть метод получения имени процесса?
В том же линуксовом prctl есть PR_GET_NAME.
Не хочется ради совместимости выкидывать функцию получения имени.
Вот, хороший пример отличной статьи. Спасибо, даже не смотря на то, что мне пока такая библиотека не нужна, читать было интересно и позновательно — в избранное.
Спасибо за добрый отзыв!
Но может, есть какие-то пожелания к будущим статьям? Делать акцент на каких-то определенных аспектах?
Предложили перенести в тематический блог.
Вопрос автору: а почему сырой make, а не стандартные distutils?
Пока все немного сыровато, и для большей гибкости сборки я решил использовать низкоуровневые средства, где я могу четко контролировать процесс сборки, какие инклуды берутся, опции компилятора и т.п. Конечно, это не универсально, для установки пользователям практически наверняка придется править Makefile.
В дальнейшем, когда библиотека окончательно созреет, я думаю перейти на использование distutils, чтобы пользователю на любой системе было легко и удобно ее ставить.
Все намного проще ./my_script.py
Пробовали так запускать?
Не везде будет выглядеть как my_script, где-то будет просто написано python.
А как быть с процессами-потомками? Если, например, у меня многопроцессный демон, то всего процессы будут называться одинаково.

Кроме того, основной упор в статье на динамическое переименование — т. е. в процессе выполнения. Я это использую как очень простое и наглядное средство мониторинга.
Всегда так запускаю, все видно.
Согласен треды не видны, но если я не ошибаюсь их вообще не видно как отдельные процессы.
Я именно про процессы, а не потоки.
У меня это выглядит примерно так:
~$ ps
owner 28813  0.0  1.4  18808  7660 ?      S    Oct07   0:54 XXd: master process
owner 28924  0.0  0.0    150   0 ?        S    13:07   0:00 XXd: task 150 
owner 28928  0.0  0.0      0   0 ?        Z    13:07   0:00 [XXd: sync] <defunct>
owner 28929  0.0  0.0    200   0 ?        S    13:07   0:00 XXd: task 839 
кроссплатформенно, блин.
Спасибо. Интересная вещь.

Да, в BSD есть некоторые особенности. Я поэтому не стал делать версию под BSD и мак, т.к. в наличии не было их.
Sign up to leave a comment.

Articles