Передача сообщений между двумя программами

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

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

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

Есть ли более приятный способ добиться того же?


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


person Bill Cheatham    schedule 17.01.2012    source источник


Ответы (2)


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

person BЈовић    schedule 17.01.2012

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

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

person tjarratt    schedule 17.01.2012