Связь между двумя приложениями в одной локальной машине - PullRequest
5 голосов
/ 26 июня 2010

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

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

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

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

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

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

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

Спасибо.

Ответы [ 5 ]

4 голосов
/ 26 июня 2010

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

3 голосов
/ 26 июня 2010

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

2 голосов
/ 26 июня 2010

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

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

2 голосов
/ 26 июня 2010

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

1 голос
/ 26 июня 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...