Дело такое: много одинаковых демонов, exec()'ающих пользовательские процессы. Демоны форкаются из текущей сессии и из любых других сессий. Мне необходим легкий механизм диффиренсации штанов по цвету, а именно: каждому демону необходимо каким-то образом отдать свой PID, чтобы потом любой простецкий скрипт его с удовольствием схавал. Сохранение, в /var/run/mypid не подойдет, поскольку демонов-то много. Так вот, кошерно ли будет каждому демону написать в stdout свой PID? А то я ничего более умного не придумал пока.
Бывает pid хранят в имени файла, например /var/run/daemon.496 ,вот тебе и куча файлов с пидами, которые "легко схавает любой скрипт".
>Бывает pid хранят в имени файла, например /var/run/daemon.496 ,вот тебе и куча
>файлов с пидами, которые "легко схавает любой скрипт".
Уже думал. Но......
Боюсь не подойдет. Поскольку:
демоны mydaemon запускают при помощи exec() пользовательские внешние процессы, писаные не мною.Демонов mydaemon каждый пользователь может пускать кучу. Последовательно, одновременно, в разных сессиях и т.д.
Есть тулза mytool которую юзер может асинхронно запускать для того, чтобы мониторить свои и только свои процессы.
Задача: как сделать джоб-контрол, такой, чтобы пользователь при помощи mytool смог среди своих процессов (запущенных mydaemon) определить процессы относящиеся к каждой конкретной копии mydaemon.
Поэтому хранить mydaemon.pid для каждого процесса не имеет значения, ну буду я их знать, что с того? Нужно, чтобы mytool (юзверь) смогла сделать соотношение: какой mydaemon.PID относится к какому userland'овскому процессу. Вот я и думаю сижу, а поскольку не настоящий программер, теряюсь в потемках :(
Дык какие проблемы? Пишем в daemon.PID пиды запущенных им exec процессов. Если они конечно не форкаются после запуска.
>>Бывает pid хранят в имени файла, например /var/run/daemon.496 ,вот тебе и куча
>>файлов с пидами, которые "легко схавает любой скрипт".
Хотя.... если в таких файлах хранить строку запуска юзерлэнд-утилит, то может что и получится. Спасибо, буду думать!Но может быть есть еще какие-нибудь идеи?