/ / Обновяване на глобална променлива в споделена библиотека, използвана от повече от един процес - c, споделени библиотеки

Актуализиране на глобална променлива в споделена библиотека, използвана от повече от един процес - c, споделени библиотеки

Имам глобална променлива в споделенабиблиотека (libshared.so). Библиотеката е достъпна чрез повече от един процес и процесите имат достъп до глобалната променлива, налична в библиотеката. Проблемът, с който се сблъсквам, е, че актуализирането на глобалната променлива (налице в споделена библиотека) от един процес не се отразява на променливата, достъпна от друг независим процес.

Търсих мрежата по този въпрос, но нямах подходящ начин да го поправя. Също така разбрах, че се споделят само текстови / кодови сегменти и всеки процес получава локално копие на сегмента данни.

Моля, предложете решение за изпълнение на това изискване.Искам да актуализирам глобалната променлива в споделената библиотека.

Enviornment: -Linux, ARM

Благодаря Амит Кумар

Отговори:

1 за отговор № 1

Ако няколко процеси използват същите споделенибиблиотека, те получават същия картографски сегмент, но всеки процес получава собствени копия на сегменти за данни, които могат да се запишат. Така че "глобално" тук означава само глобално в контекста на един процес и адресното му пространство.

Помислете за това: всяка друга реализация ще изисква призив, напр. errno в стандартната библиотека C е "глобална" и определено не искате да прочетете грешката, произведена от произволен друг процес тук.

Ако това е вашата собствена библиотека и наистина трябва да споделяте данни между процесите, разгледайте споделената памет (например в Linux shmget () et al).