2015-06-07 2 views
1

Вы знаете, как делиться глобальной переменной в общей библиотеке?Глобальная переменная в общей библиотеке

У меня проблема с этим. я объявляю в моем файле заголовка

int a; 

И я буду использовать его в какой-то файл C, чем я скомпилировать как разделяемую библиотеку. Но обновление A в файлах кажется нераспространенным, и изменение переменной неэффективно.

Я прочитал в каком-то посте, потому что сегмент данных не является общим, но мне он нужен. У вас есть идея, как это сделать?

Спасибо!

+0

Я уже тестирую, чтобы включить его в файлы C, но не работает. –

+0

http://stackoverflow.com/questions/1433204/how-do-i-use-extern-to-share-variables-between- source-files-in-c см. это – Subinoy

ответ

1

Я прочитал в каком-то посте, потому что сегмент данных не является общим, , но мне это нужно. У вас есть идея, как это сделать? Сегмент данных не разделен. Извините, но так оно и работает.

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

В тот момент, когда он делает это, операционная система может применять политику COW (копировать по записи) и создавать точную копию памяти библиотеки специально для использования программы, которая пыталась ее модифицировать.

Другие программы поэтому не видят изменений, внесенных в первую программу.

Если вы хотите иметь общую память между процессами, нужно обратиться к операционной системе. Например, Linux использует IP-адрес shared memory, и вы должны использовать его API для достижения того, чего хотите. Не обескураживайте, это очень просто.

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