我目前创建了一个共享库(libshared.so),其中包含一个变量“a”,它将 由共享库api修改。我有两个应用程序 app1 和 app2。 app1 正在使用 共享库 api,它改变了“a”的值。现在同时运行 app2 时 应该看到更改后的值。 这违背了共享库的实际使用,作为共享的单独实例 将为每个应用程序创建库。 现在我想在两个 app1 和 app2 之间使用共享库的单个实例,这样 他们可以看到共享库的相同代码和数据段。 有什么可能的方法来实现这一点,通过改变 gcc 链接器标志
最佳答案
这些答案:
- What happens to global and static variables in a shared library when it is dynamically linked?
- C Linux: Global variable located in shared library as singleton
会打破您对共享库方法的期望。
我建议您看一下 Shared Memory 和 POSIX API shmget。
一个进程将充当服务器并创建共享内存并将共享内存 key 提供给客户端。
另一种方法是创建一个管道来在进程之间共享数据
你可以阅读 this page 以获得更多关于 linux 进程间通信的信息
关于c - 如何在两个应用程序之间共享一个共享库(*.so)实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35788924/