2015-03-13 4 views
2

Я очень новичок в разработке приложений Linux.Общая библиотека Linux

У меня есть две библиотеки, разделяемые библиотеки libGetData.so и libProcessData.so.

И я запускаю два разных приложения на C++ как A и B на ПК с Linux и используя эти две библиотеки в обоих приложениях.

У меня есть несколько статических переменных в обеих библиотеках.

Но, когда я поставил статическую переменную в библиотеке libGetData.so из приложения А. Ее не отражает в заявке B.

Моя цель, если я использую общую библиотеку в любом приложении, и если я установить любой статическая переменная в этой библиотеке. То же самое должно отражать и другое приложение, использующее одну и ту же библиотеку.

Пожалуйста, помогите мне ...

+2

Только общий код библиотеки, а не переменная память. Каждый процесс получает свой собственный кусок (виртуализованной) ОЗУ для запуска кода библиотеки. – Galik

ответ

5

Но, когда я поставил статическую переменную в библиотеке libGetData.so из приложения A. Ее не отражает в заявке В.

Correct.

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

Нет, это не то, как работают совместно используемые библиотеки.

Общие библиотеки позволяют без изменений изменять размер разделяемых библиотекой , но это всего лишь деталь реализации на уровне ОС. Они не означают, что процессы имеют адресное пространство. Переменные в разных процессах различны и не разделены.

Чтобы связать процессы, им необходимо использовать некоторую форму Inter-Process Communication (IPC), такую ​​как трубы или сокеты, или разделяемую память (которая не связана с общими библиотеками).

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