C ++ взаимодействует между процессами - PullRequest
1 голос
/ 28 июля 2011

У меня есть DLL, которая загружается в несколько процессов.Что было бы чистым способом иметь связь между этими процессами / DLL.Отправка простых строк является целью.Я бы предпочел избегать sendmessage, file io и отправки адреса строковой команды.

Ответы [ 3 ]

5 голосов
/ 28 июля 2011

Я бы посмотрел в разделяемую память .На MSDN есть хороший пример .

Имейте в виду, что, как и при использовании потоков в одном и том же процессе, доступ к общей памяти не сериализуется.Вам потребуется некоторая форма синхронизации (например, именованный мьютекс) для сериализации доступа к блоку памяти.

2 голосов
/ 28 июля 2011

Я предполагаю, что вы пишете код для Windows.

Именованные каналы - это, вероятно, лучшее решение, если ваша связь идет между процессами.Вы можете легко спроектировать протоколы типа клиент / сервер, такие как:

Клиент: вот данные для обработки

Сервер: Вот результаты обработкиваш запрос

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

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

0 голосов
/ 28 июля 2011

Поскольку все остальные предполагают Windows, могу ли я считать UcOs / II? Используйте почтовый ящик сообщения. Хорошо, я думаю, что если вы находитесь в Windows, должно быть что-то похожее, если бы быстрый гугл обнаружил Почтовые ящики .

...