nixp.ru v3.0

22 января 2017,
воскресенье,
15:22:13 MSK

DevOps с компанией «Флант»
Аватар пользователя Curu3MyHg
Curu3MyHg написал 7 февраля 2007 года в 02:07 (290 просмотров) Ведет себя как мужчина; открыл 41 тему в форуме, оставил 896 комментариев на сайте.

Расскажите мне, пожалуйста, в двух словах, как белые люди решают такую вот задачку:

Есть процесс, страшно сказать, демон.

Висит он на своём каком-то порту, цепляется к нему народ, он форкается и висит себе дальше..

Но висит он там не просто так.

Иногда он должен что-то сообщать клиентам, которые имели несчастье к нему прицепиться. Причём, передать инфу всем клиентам одновременно. Как бы мне так из другой программы передать инфу во все форки этого демона разом, не прибегая к помощи мускула..?

Сейчас у меня всё происходит просто ну ооочень по волосатому.. Каждый из форков раз в десять секунд лезет в мускул на предмет наличия там новой инфы, которая не старше, чем десять секунд, если такая имеется — процесс сообщает инфу своему клиенту. Писалось всё за одну ночь, эта была вообще моя первая «сетевая» программа (я был удивлён, что оно ваще хоть как-то работает, а оно, между прочим, работает вполне нормально:)), думать времени не было, клиентов там висит немного, благо, писалось исключительно для служебного пользования. А сейчас просто времени немного свободного появилось, да и интересно стало..

Написано всё на PERL’е под Linux.

P.S. Сильно не пинать, не программер я ни в каком месте. Опыт программирования на PERL’е — тыщ пять-шесть строчек.

P.P.S. Стивенса сейчас под рукой нет. ((

decvar

послать сигнал ему, а вон пошлет сигнал всем чилдам и они что-нить прочитать для данных от что собственно передавали

Curu3MyHg
decvar
послать сигнал ему, а вон пошлет сигнал всем чилдам и они что-нить прочитать для данных от что собственно передавали

ээ…?

вторая половина предложения слишком сложна для моего понимания..(

1) Послать сигнал ему

2) Он пошлёт всем потомкам.

3) ..?

Longobard

Есть еще вариант такой:

пусть демон слушает какой-нить пайп.

Если в пайп что-то пришло — разослать это всем потомкам. Рассылать данные потомкам можно кучей разных способов, начиная от неименованных пайпов или доменных сокетов и заканчивая очередями сообщений.

Удобство пайпа в том, что он обладает семантикой обычного файла и в него можно срать даже из баш-скрипта. Просто

echo "Ахтунг! Дети мои, всем выйти из сумрака" > /tmp/TheMegaPipe
Curu3MyHg
Longobard
Есть еще вариант такой:

пусть демон слушает какой-нить пайп.

Если в пайп что-то пришло — разослать это всем потомкам. Рассылать данные потомкам можно кучей разных способов, начиная от неименованных пайпов или доменных сокетов и заканчивая очередями сообщений.

Удобство пайпа в том, что он обладает семантикой обычного файла и в него можно срать даже из баш-скрипта. Просто

echo "Ахтунг! Дети мои, всем выйти из сумрака" > /tmp/TheMegaPipe

Спасибо. Примерно понял. Идея понравилась.

В общем, один чёрт, доки читать надо..

Curu3MyHg
Longobard
разослать это всем потомкам. Рассылать данные потомкам можно кучей разных способов, начиная от неименованных пайпов или доменных сокетов и заканчивая очередями сообщений.

Теперь глупый вопрос.

Совсем глупый, Стивенса под рукой нет.

А из одного пайпа могут читать сразу все дети..? Или мне нужно для каждого свой создавать..?

P.S. Как бы я не хотел, Стивенс под рукой так и не появляется…(((

primus

можно, наверное, немного иначе:

-писать информацию в разделяемую память

-разослать потомкам сигнал по которому они (потомки) прочтут ее (информацию)

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.