![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
z7ql |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 19.9.2013 Репутация: нет Всего: нет |
Имеем следующее:
От чего зависит будет ли обьявленная в 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 к области памяти каждого из процессов - то есть она будет разделяемой памятью, как здесь Ссылка На самом деле при запуске ./a.out 1 & ./a.out 2 получаем следующее:
То есть создаётся по экземпляру переменной для каждой программы, с которой линкуется библиотека. Итак. Можно ли при помощи сильного колдунства сделать id общей? Или надёжнее использовать mmap/shmget? Это сообщение отредактировал(а) z7ql - 20.9.2013, 08:02 |
||||||||
|
|||||||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Не будет. В статье по ссылке обсуждается проблема экономии физической памяти, путем мэпирования одной и той же физической памяти (от библиотек) в каждый процесс. Это действительно делается, но писать в эту память не получится ![]() Для организации разделяемых переменных между разными процессами их придется организовывать самому ![]() Именно так |
|||
|
||||
z7ql |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 19.9.2013 Репутация: нет Всего: нет |
Понял. Спасибо.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |