共享库中的全局变量
Global variable in shared library
你知道如何在共享库中共享全局变量吗?
我对此有疑问。
我在头文件中声明
int a;
我会在一些 C 文件中使用它,而不是将其编译为共享库。
但是文件中A的更新似乎没有共享,变量的变化也没有生效。
我读了一些 post 那是因为数据段没有共享,但是,我需要它。
你知道怎么做吗?
谢谢!
I read in some post that is because the data segment isn't shared,
but, I need it. Have you an idea of how do that ?
Data segment isn't shared indeed. I'm sorry, but that's how it works.
许多现代操作系统将共享库加载到内存中,以便使用它的程序可以读取其内存位置的值,直到它执行写入。
在这样做的那一刻,操作系统可能会应用 COW
(写时复制)策略,并创建库内存的精确副本,专门供试图修改它的程序使用.
因此其他程序看不到第一个程序所做的任何更改。
如果要在进程之间共享内存,必须参考操作系统。例如,Linux 使用 shared memory IPC,你必须使用它的 API 来实现你想要的。别灰心,很简单
你知道如何在共享库中共享全局变量吗?
我对此有疑问。 我在头文件中声明
int a;
我会在一些 C 文件中使用它,而不是将其编译为共享库。 但是文件中A的更新似乎没有共享,变量的变化也没有生效。
我读了一些 post 那是因为数据段没有共享,但是,我需要它。 你知道怎么做吗?
谢谢!
I read in some post that is because the data segment isn't shared, but, I need it. Have you an idea of how do that ? Data segment isn't shared indeed. I'm sorry, but that's how it works.
许多现代操作系统将共享库加载到内存中,以便使用它的程序可以读取其内存位置的值,直到它执行写入。
在这样做的那一刻,操作系统可能会应用 COW
(写时复制)策略,并创建库内存的精确副本,专门供试图修改它的程序使用.
因此其他程序看不到第一个程序所做的任何更改。
如果要在进程之间共享内存,必须参考操作系统。例如,Linux 使用 shared memory IPC,你必须使用它的 API 来实现你想要的。别灰心,很简单