Демоны (способы взаимодействия)

Модератор: Модераторы разделов

Аватара пользователя
alexis031182
Сообщения: 180
ОС: ALTLinux 4.0 Desktop

Демоны

Сообщение alexis031182 »

Здравствуйте.

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

Спасибо.
Да пребудут в целости хмуры и усталы
Делатели ценностей Профессионалы.
Спасибо сказали:
evgeny2k
Сообщения: 26
ОС: mandriva 2008 spring

Re: Демоны

Сообщение evgeny2k »

Юзайте каналы.
Демон скриптовый или на чем посерьезнее писать будете?
А ваще вам нужно что-то типа popen()
Спасибо сказали:
ivze
Сообщения: 39
ОС: Ubuntu

Re: Демоны

Сообщение ivze »

Именованные каналлы. (pipefile)
Есть другие.
Сообщения(messages) (не сигналоы!).
Есть возможность устроить разделяемую память между процессами.
Спасибо сказали:
Аватара пользователя
alexis031182
Сообщения: 180
ОС: ALTLinux 4.0 Desktop

Re: Демоны

Сообщение alexis031182 »

evgeny2k писал(а):
22.12.2007 21:00
Юзайте каналы.

Имеется ввиду pipes?

evgeny2k писал(а):
22.12.2007 21:00
Демон скриптовый или на чем посерьезнее писать будете?
А ваще вам нужно что-то типа popen()

Язык C/C++. Спасибо, поищу по этим ключевым словам информацию.

ivze писал(а):
22.12.2007 21:00
...
Есть возможность устроить разделяемую память между процессами.

А это как?
Да пребудут в целости хмуры и усталы
Делатели ценностей Профессионалы.
Спасибо сказали:
evgeny2k
Сообщения: 26
ОС: mandriva 2008 spring

Re: Демоны

Сообщение evgeny2k »

А можно более подробно, для чего демон?
Типа ТЗ напишите
Спасибо сказали:
Аватара пользователя
alexis031182
Сообщения: 180
ОС: ALTLinux 4.0 Desktop

Re: Демоны

Сообщение alexis031182 »

evgeny2k писал(а):
22.12.2007 21:13
А можно более подробно, для чего демон?
Типа ТЗ напишите

Собственно задача заключается в следующем:
  • разработать два независимых друг от друга процесса (программы);
  • первый осуществляет работу по сбору, накоплению и формированию некоей информационной структуры (здесь нужно подробно?) во всё время своего исполнения;
  • второй процесс посылает запрос первому на возможность предоставления этой информации себе;
  • первый процесс каким-то образом её и отсылает.
Я знаю как решить данный вопрос посредством сетевого взаимодействия. Но мне бы хотелось узнать, существуют ли другие методы и более ли они эффективны.
Да пребудут в целости хмуры и усталы
Делатели ценностей Профессионалы.
Спасибо сказали:
evgeny2k
Сообщения: 26
ОС: mandriva 2008 spring

Re: Демоны

Сообщение evgeny2k »

Да, в вашем случае (если оба процесса живут на одном хосте) самым оптимальным будет использовать именованные каналы (пайпы). Один процесс открывает пайпу с правами на запись, а второй из нее только читает, и все довольны.
Спасибо сказали:
Аватара пользователя
alexis031182
Сообщения: 180
ОС: ALTLinux 4.0 Desktop

Re: Демоны

Сообщение alexis031182 »

evgeny2k писал(а):
22.12.2007 21:32
Да, в вашем случае (если оба процесса живут на одном хосте) самым оптимальным будет использовать именованные каналы (пайпы). Один процесс открывает пайпу с правами на запись, а второй из нее только читает, и все довольны.

Уточните, пожалуйста, данный метод является более эффективным, нежели использование способа обмена информации через сетевой порт? Или это просто как вариант?
Да пребудут в целости хмуры и усталы
Делатели ценностей Профессионалы.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5456
ОС: Gentoo

Re: Демоны

Сообщение /dev/random »

Если демон запускается клиентом, то popen() - оптимальный вариант (нечего портам висеть). Если клиентов много на один демон - сеть. Разделяемая память - это зло, будет куча проблем с синхронизацией. Можно еще посмотреть в сторону man unix

ЗЫ именованные каналы ничем не лучше и не хуже unix-сокетов

ЗЗЫ если не считать того, что unix-сокеты дуплексные
Спасибо сказали:
evgeny2k
Сообщения: 26
ОС: mandriva 2008 spring

Re: Демоны

Сообщение evgeny2k »

Уточните, пожалуйста, данный метод является более эффективным, нежели использование способа обмена информации через сетевой порт? Или это просто как вариант?

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

ЗЫ именованные каналы ничем не лучше и не хуже unix-сокетов

Согласен
ЗЗЫ если не считать того, что unix-сокеты дуплексные

Ну с пайпами работать в два направления - тоже не проблема :)
Спасибо сказали:
Аватара пользователя
alexis031182
Сообщения: 180
ОС: ALTLinux 4.0 Desktop

Re: Демоны

Сообщение alexis031182 »

Спасибо большое. Думаю нужно действительно попробовать именованные каналы использовать. Сокеты неудобны тем, что требуется сетевой порт, плюс мне и нужно лишь подключение исключительно одного клиента.
Да пребудут в целости хмуры и усталы
Делатели ценностей Профессионалы.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Демоны

Сообщение drBatty »

alexis031182 писал(а):
22.12.2007 21:24
уществуют ли другие методы и более ли они эффективны.
Есть смысл сделать обмен через файлы.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
ssh
Сообщения: 78
ОС: Debian

Re: Демоны

Сообщение ssh »

/dev/random писал(а):
22.12.2007 21:36
Разделяемая память - это зло, будет куча проблем с синхронизацией.


Разделяемая память плюс семафоры - никакого зла не будет. Если на один демон приходится много клиентов, то такое решение оптимально.

Кстати, если делать обмен через файлы (только зачем оно нужно?) без семафоров тоже не обойтись.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Демоны

Сообщение drBatty »

ssh писал(а):
23.12.2007 11:15
Кстати, если делать обмен через файлы (только зачем оно нужно?) без семафоров тоже не обойтись.

Да легко! Как я логи читаю? Всё дело в том, что
alexis031182, не написал, как именно будет происходить обмен: Если клиент ничего не хочет сообщить демону(как при чтении лог-файла) - никаких конфликтов не будет.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
halturin
Сообщения: 167
ОС: Linux

Re: Демоны

Сообщение halturin »

evgeny2k писал(а):
22.12.2007 21:32
Да, в вашем случае (если оба процесса живут на одном хосте) самым оптимальным будет использовать именованные каналы (пайпы). Один процесс открывает пайпу с правами на запись, а второй из нее только читает, и все довольны.


Если я правильно понял, то человеку надо именно как-то отсемафорить "мол, эй, я тут насобирал для тебя, глянь плиз", и процесс идет смотреть. Так что я бы предложил использовать разделяемую память, а "семафорить" - либо как раз таки семафорами, либо сигналами, либо сообщениями... это уж к чему ближе душа лежит :)

ssh писал(а):
23.12.2007 11:15
/dev/random писал(а):
22.12.2007 21:36
Разделяемая память - это зло, будет куча проблем с синхронизацией.


Разделяемая память плюс семафоры - никакого зла не будет. Если на один демон приходится много клиентов, то такое решение оптимально.

Кстати, если делать обмен через файлы (только зачем оно нужно?) без семафоров тоже не обойтись.


твое сообщение прочитал после того как свое запостил :)
Спасибо сказали:
LMZ
Сообщения: 25
ОС: debian etch

Re: Демоны

Сообщение LMZ »

небольшой оффтоп:
может использовать базу данных?!
Спасибо сказали:
Аватара пользователя
malex
Сообщения: 374
ОС: debian

Re: Демоны

Сообщение malex »

может использовать базу данных?!

имхо, я тоже так бы сделал (использовал бы что то типа SQLite)
Ну вот, еще один день прошел, а мы все еще живы. И может быть стали умнее.
Спасибо сказали: