Общение между двумя процессами - PullRequest
2 голосов
/ 07 апреля 2011

Это обсуждалось ранее, но я боролся с ответами, поэтому надеялся на более четкий ответ, приспособленный к моей ситуации:

Я занимаюсь разработкой приложения на C ++ под 32-битной Windows (минимальное требование - WinXP), которое должно обмениваться данными между двумя процессами.

Дело в том, что процесс 1 (p1) должен запустить процесс 2 (p2), а затем вызвать различные функции p2.Мне нужно, чтобы p1 остановил то, что он делает, до тех пор, пока не завершится вызываемая им функция p2, а затем продолжил с того места, где он остановился.

Какие методы я бы лучше всего изучил, чтобы я мог сделатькак то так?

Всего наилучшего,

Крис

Ответы [ 4 ]

3 голосов
/ 07 апреля 2011

Я знаю, что удаленный вызов процедур звучит более привлекательно, так как избавляет от необходимости разрабатывать свой собственный "протокол связи" и сериализовывать свои собственные запросы и ответы, а как насчет простого написания двух процессов, которые взаимодействуют через анонимный канал * 1002? * или розетка?

2-й процесс может наследовать дескриптор канала / сокета. Затем он может просто обслуживать запросы 1-го процесса, блокируя канал для запроса. 1-й процесс может просто записать запрос в канал / сокет и ждать ответа, блокируя сокет.

2 голосов
/ 07 апреля 2011

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

1 голос
/ 07 апреля 2011

Мьютексы в Win32 - это межпроцессная синхронизация. Вы также можете изучить использование условной переменной, но я не уверен, существуют ли их кросс-процессные разновидности.

0 голосов
/ 07 апреля 2011

Попробуйте прочитать о семафорах Win32, возможно, подчеркнув события Win3e2, основанные на семафорах.События разрешают связь p1 <-> p2.Если двум процессам нужно передать много значений туда и обратно, вы можете прочитать об общей памяти.Оба эти механизма являются очень стандартными и обычными способами межпроцессного взаимодействия.

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