Связь между программами Linux - PullRequest
4 голосов
/ 08 февраля 2012

как бы я реализовал связь между программами Linux, написанными на C?В частности, я хочу следующее:

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

Может ли кто-нибудь указать мнек некоторым API, которые могут быть использованы для реализации такой конструкции программного обеспечения в Linux?В Windows я могу просто перечислить все окна, проверить их имена классов, чтобы узнать все экземпляры моей программы, а затем зарегистрировать пользовательское сообщение в системе, которое я могу использовать для отправки данных в них.Но как мне это сделать в Linux?

Спасибо за любые подсказки!

Ответы [ 4 ]

2 голосов
/ 08 февраля 2012

У вас есть много вариантов:

  • Именованные каналы;
  • Команды Msg (msgget, msgsend);
  • Использование сокетов TCP;
  • Использование доменных сокетов UNIX;
  • Использование стороннего брокера, такого как DBus или ActiveMQ;

Если это для автономной машины и только одного потока данных, я бырекомендуем вариант №1.

1 голос
/ 08 февраля 2012
1 голос
/ 08 февраля 2012

Я бы, наверное, начал с именованных каналов

0 голосов
/ 08 февраля 2012

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

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