共享库中的全局变量

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 来实现你想要的。别灰心,很简单