LINUX.ORG.RU

Как написать daemon?


0

0

Возникла такая задача: нужен демон, который периодически сканит директорию, если там есть файлы, порождает процессы, но не более CHILD_MAX(5, к примеру). Когда потомок завершился и если еще есть файлы - породится новый, и т.д. пока очередь не разгребется.

Ну, если файлов нет, то демон один сидеть будет...

Реализуется все на Перле, что, впрочем, не столь важно.

Вопрос - как все это обставить "по науке"? Т.е. как организуется слежение за потомками, их отстрел, подсчет кол-ва текущих?

Принимаются отсылки к реальному коду, но попроще, чем Апач :) и ссылки на Стивенса :) Ну и прочие объяснения :)))

★★★★★

Посмотреть код inetd на предмет CHILD_MAX на каждый сервис и lpd на предмет сканирования директории? ;-)

vodz ★★★★★
()

Вообще-то на перле демона пробовал написать... так толком и не получилось... хотя долго и не возился :( А вот с чилдренами проще дело когда чилдрен завершил работу родители посылается сигнал (система посылает) SIG_CHLD твоя программа ловит этот сигнал... функцию повесь на его обработку... которая делает CHILD_COUNT--; waitpid или wait не помню тут точно

anonymous
()

Vodz - na lpd posmotru, v principe, podhodit. Inetd u menja takogo umnogo net :)

A voobshe - kto-nit' pisal svoih demonov? A to vse ravno slishkom mnog koda polu4aetsja na posmotret', a nado - skelet prosto... Vot u Stevensa gde-nit' by naiti primer...

BaT ★★★★★
() автор топика

K sozhaleniu, eto daet opisanie tol'ko kak otkrepit'sja ot control tty, 4to est' zada4a trivial'naja. Bolee interesnyi vopros - kak vesti nadzor za child-processami i kontrol' za 4islennost'u processov.

Ja otkopal koe-kakie primery v Stevens "UNIX network programming".

No, voobshe stranno, 4to nikto ne znaet, kak daemonov pisat' - samoe Linuxovoe zanjatie...

BaT ★★★★★
() автор топика

Ищи книгу Робачевского "Операционная система Unix". Там сказано, как и приведен пример кода (короткий). Насчет контроля за потомками там тоже описано. Все это сюда перебивать не хочу, но если шибко ломает и нигде найти ничего толкового не можешь, то пиши: ybtut@tut.by Код я пробовал -- вроде работает (Mandrake 70RE)

anonymous
()

PS Там код на С, на перле придется искать аналоги системным вызовам. Но зато там достаточно подробно и не слишком объемно (IMHO) изложен механизм

anonymous
()

anonymous (*) (2001-08-28 20:05:53.0):

Так получилось, что с Анреем я работаю :)) Так что особо искать не надо :) Вот только по его словам лучший первоисточник в данном случае R.Stevens, коего я сейчас и читаю :)

Спасибо за помощь!

С уважением, BaT

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