Передача сообщений между двумя программами - PullRequest
2 голосов
/ 17 января 2012

В настоящее время у меня есть две автономные программы на C ++: ведущий и ведомый. Ведущий записывает некоторые данные в общую память, используя boost::interprocess, а затем запускает ведомое устройство, которое может читать из памяти.

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

Единственный способ, которым я могу думать, чтобы достичь того же самого, - это чтобы подчиненный постоянно проверял общую память на наличие объекта, а при обнаружении считывал с него и удалял его. Однако это не кажется оптимальным.

Есть ли лучший способ добиться того же?


Справочная информация: это продолжение моего предыдущего вопроса здесь ...

Ответы [ 2 ]

1 голос
/ 18 января 2012

Вы можете использовать очереди сообщений posix или, что еще лучше, повысить очереди сообщений .

0 голосов
/ 17 января 2012

Почему бы им не общаться через доменный сокет unix? Из другого вопроса вы сказали, что строили это на Ubuntu, так что это не будет работать сразу на Windows.

Boost поддерживает это в boost :: asio lib , который, как я подозреваю, использует именованные конвейерные сокеты при компиляции для окон.

...