Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Как сменить имя процесса в Python

Написал тут небольшой демон на Пайтоне и обнаружил, что «тушить» его через start-stop-daemon неудобно.

Start-stop-daemon — утилита для запуска и остановки демонов, обычно для останова ей передаётся параметр «stop» и ещё два параметр: имя файла, где записан PID процесса, который надо остановить и имя этого процесса. Утилита, прочитав PID, должна проконтролировать — действительно ли на данном PID работает процесс с заданным именем.

Засада в том, что демон на Пайтоне и имя процесса у меня — «python». Я в этом языке программирования пока новичок (программирую с сентября), возможно поэтому не нашёл в документации как это делается (Ваня, расскажи, если есть простой способ).

Я помню, что в Perl было очень просто — записал в переменную $0 имя и в списке процессов видно записанное значение. В Python запись в sys.arvg[0] ничего не даёт.

В общем, мой велосипед (только для Linux!):

import os.path, sys, ctypes

ctypes.CDLL('libc.so.6').prctl(15, os.path.basename(sys.argv[0]), 0, 0, 0)

Не все утилиты «увидят» новое имя, но для start-stop-daemon и killall этот способ работает.

Ctrl ←WTF???
2 комментария
ninjacolumbo.ya.ru 2009

Сотона!

Евгений Степанищев (bolknote.ru) 2009

Комментарий для ninjacolumbo.ya.ru:

А как ты пишешь, если ярушечку удалил? O_o