@ward_ua

Как осуществляется межпроцессное взаимодействие на C++?

Здравствуйте, хабровцы. Недавно закончил читать книгу Стивена Прата о программировании на C++. После нее остался один открытый вопрос: как на C++ осуществляется межпроцессорное взаимодействие, то есть как можно вызвать функцию из "чужого" процесса? Что-то слышал о нативных функциях, имеет ли это отношение к теме? Заранее спасибо за ответы.
  • Вопрос задан
  • 1171 просмотр
Решения вопроса 1
@none7
В C++ никак. Любое взаимодействие с внешним(для программы) миром это привилегия ядра ОС. STL предоставляет весьма ограниченный набор обёрток над системным API и коммуникация между процессами не входит в этот набор. Традиционным способом коммуникации являются Pipe и Socket, но они просто переправляют массивы байтов. И если нужно соорудить RPC, то нужно сериализовать параметры и в таком виде отправлять. И эти обёртки так или иначе придётся писать самому, так как полноценной RTTI в C++ нет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Как и в любых других языках пайпы сокеты сигналы общая память эвенты. По сути вам нужно настроить передатчик и приёмник и обернуть это все кодом.
Ответ написан
Комментировать
maaGames
@maaGames
Погроммирую программы
Вызов функции из чужого процесса это не совсем межпроцессорное взаимодействие. Выше уже написали про сокеты и прочее, но это всё для передачи данных, а вот чтобы вызвать функцию напрямую, как-то терзают сомнения. Всё-таки это совсем другое адрессное пространство и я не уверен, что можно получить адрес функции. Если же это озможно, то достаточно привести указатель к нужному типу, поправить стек, если требуется и вызвать её. Это работает в одном процессе (например, если из dll "воруешь" функцию основног приложения), а вот между процессами не уверен.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы