| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > Совместное использование переменных в shared lib |
| Автор: z7ql 20.9.2013, 06:26 | ||||||||
Имеем следующее:
От чего зависит будет ли обьявленная в shared библиотеке переменная физически одним местом в памяти для всех процессов или нет? Небольшой пример кода: Исходники библиотеки: pool.h:
pool.c:
Исходник программы:
Сборка: cc -c -fPIC pool.c cc -shared -fPIC -rdynamic pool.o -o libpool.so rm pool.o cc main.c -rdynamic -lpool -L. Результат: То есть ожидалось, что при линковке система подключит переменную id к области памяти каждого из процессов - то есть она будет разделяемой памятью, как здесь http://stackoverflow.com/questions/10098489/sharing-executable-memory-pages-in-linux На самом деле при запуске ./a.out 1 & ./a.out 2 получаем следующее:
То есть создаётся по экземпляру переменной для каждой программы, с которой линкуется библиотека. Итак. Можно ли при помощи сильного колдунства сделать id общей? Или надёжнее использовать mmap/shmget? |
| Автор: z7ql 26.9.2013, 14:12 |
| Понял. Спасибо. |