По определению разделяемая библиотека является общей, поэтому два процесса будут использовать одну и ту же физическую память для сегмента кода библиотеки. Таким образом, вместо того, чтобы создавать какие-то хитроумные схемы, вы можете просто передать имена библиотеки и функции от сервера к клиенту, и клиент получит адрес функции, используя dlopen()
+ dlsym()
.
Обратите внимание, что в этом случае будет две копии сегментов данных (если в библиотеке есть некоторые глобальные или статические переменные), например, если сервер устанавливает некоторую переменную static
внутри библиотечной функции, ее значение не изменится для клиента.