2010-06-26 3 views
5

Я использую язык C и Linux в качестве платформы программирования.Связь между двумя приложениями на том же локальном компьютере

Я разрабатываю приложение для пользовательского пространства, которое работает в фоновом режиме, подобно демону. И моя проблема в том, что я хочу, чтобы другое приложение-пользовательское пространство связывалось с этим демоном.

Я знаю, что мне нужно использовать метод Interprocess Communication, но я не знаю, что такое правильная реализация.

Но использование IPC в моей реализации связи - это мой другой вариант. На самом деле я просто хочу изменить атрибут моего демона, используя другое приложение. См. Ниже сенарио:

  1. Мой демон работает в фоновом режиме.
  2. Тогда какое-то приложение будет контролировать свойства демона, например, время задержки сна.

Моим первым вариантом является обращение к файлу со значениями свойств. Так что мой деамон будет опросить эти ценности. В то время как другое приложение изменит эти значения.

Я не уверен в эффективности моих вариантов. Пожалуйста посоветуй.

Спасибо.

ответ

4

Обновление файла конфигурации и отправка сигнала, чтобы вызвать повторное чтение, является стандартной практикой, дешевой и простой.

3

Вы ищете D-Bus. Сохраните начальные значения в файле, затем прослушайте D-Bus для запросов на его изменение.

+0

gconf/dconf/xfconf все делают довольно ТОЧНО, что они хотят (а во-вторых, на основе dbus) – Spudd86

2

Сокеты домена Unix - это простой метод IPC.

+0

Фактически, я планирую создать общую библиотеку, чтобы любое приложение могло использовать эти API для связи с демоном. Можно ли использовать сокеты домена в такой реализации? – domlao

2

Если бы я был вами, я бы полностью отказался от IPC и вместо этого попросил демон установить конфигурационный файл для изменений. IPC действительно необходим, если вы собираетесь отправлять тысячи сообщений в секунду, а накладные расходы становятся невыносимыми.

inotify - это опция для мониторинга файлов.

+0

Спасибо, я просто отправлю сигнал вместо использования inotify. – domlao

+0

Я согласен использовать конфигурационный файл в этом случае, но я полностью не согласен с тем, что IPC следует использовать только для тысяч сообщений в секунду. – BobbyShaftoe

1

Я бы попросил демона прослушивать трубку/fifo, если это достаточно просто, что вам нужно только прочитать пару байтов, поданных из другой программы. В противном случае локальный доменный сокет хорош для запуска простого протокола.

Смежные вопросы