您知道如何在共享库中共享全局变量吗?
我遇到了问题。 我在我的头文件中声明
int a;
我将在一些C文件中使用它,而不是将其编译为共享库。 但是文件中A的更新似乎没有被共享,变量的变化也无效。
我在一些帖子中读到这是因为数据段没有共享,但我需要它。 你知道这是怎么做到的吗?
谢谢!
答案 0 :(得分:2)
我在一些帖子中读到这是因为数据段未共享, 但是,我需要它。你知道这是怎么做到的吗? 数据段确实没有共享。对不起,但这就是它的工作方式。
许多现代操作系统将共享库加载到内存中,因此使用它的程序可以读取其内存位置的值,直到执行写入为止。
当它这样做时,操作系统可以应用COW
(写入时复制)策略,并专门为使用试图修改它的程序创建库内存的精确副本。 / p>
因此,其他程序无法看到第一个程序所做的任何更改。
如果要在进程之间共享内存,则必须参考操作系统。例如,Linux使用shared memory IPC,您必须使用它来实现您想要的API。不要气馁,这很简单。