2016-03-04 4 views
0

В настоящее время я создал общую библиотеку (libshared.so), которая содержит переменную «a», которая будет изменяться с помощью с помощью общей библиотеки api. У меня есть два приложения app1 и app2. app1 использует общую библиотеку api, которая изменяет значение «a». теперь одновременно, когда приложение2 работает должно увидеть измененное значение. Это противоречит фактическому использованию разделяемой библиотеки, поскольку отдельный экземпляр общей библиотеки будет создан для каждого приложения. теперь я хочу использовать один экземпляр разделяемой библиотеки между двумя приложениями 1 и 2, так что они могут видеть один и тот же сегмент кода и данных общей библиотеки. Есть ли возможный путь для достижения этой цели, изменяя Gcc флаги компоновщикаКак разделить одну общую библиотеку (*. So) экземпляр между двумя приложениями

+0

Вы ищете [Shared Memory (википедия)] (https://en.wikipedia.org/wiki/Shared_memory#In_software) – dvhh

+0

Дополнительная информация http://stackoverflow.com/a/19374253, http://stackoverflow.com/a/14563172 – dvhh

+0

Нет dvhh, я не ищем общую память, у меня есть набор api, который будет использоваться app1 и app2. как это сделать с использованием общей памяти, если это возможно с разделяемой памятью – anikhan

ответ

0

Этого ответ на:

расшатать ли ваши ожидания от подхода разделяемых библиотек.

Я рекомендую вам взглянуть на Shared Memory и POSIX APIshmget.

Один процесс будет действовать как сервер и создать общую память и предоставить ключ общей памяти клиенту.

Другой подход должен был бы создать канал для обмена данными между процессом

Вы можете прочитать this page, чтобы иметь больше информации о том процессе общения на Linux

+0

Первая ссылка не актуальна. –

Смежные вопросы