c - 如何在c中的两个程序之间共享库

标签 c linux operating-system shared-libraries cpu-cache

我想在两个不同的 C 程序中使用相同的库函数(即 OpenSSL 库)进行计算。我如何确保两个程序都使用通用库,意味着库的一个副本加载到共享主内存中,并且两个程序都从该内存位置访问该库计算?

例如,当第一个程序访问库进行计算时,它会从主内存加载到缓存中,当第二个程序稍后想要访问它时,它将访问缓存中的数据(已经由第一个程序加载),不再来自主内存。

我在Linux下使用GCC。任何解释或指示将不胜感激。

最佳答案

代码由操作系统共享,不仅是共享库,还包括同一二进制文件的可执行文件 - 您无需执行任何操作即可拥有此功能。它是系统内存管理的一部分。

数据不会在两个进程之间共享。您需要一个进程中的线程来共享数据。但除非您愿意,否则只需确保两个程序使用完全相同的共享库文件(.so 文件)即可。通常你不需要考虑这个;仅当两个程序使用不同版本的库时才可能很重要(当然它们不会共享)。

看看 ldd /path/to/binary 的输出查看二进制文件使用了哪些共享库。

关于c - 如何在c中的两个程序之间共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21475018/

相关文章:

operating-system - 当条目被从 TLB 驱逐时更新页表

c - 二进制大数

java - UTF-8 的不可打印字符 - SUSE Linux Java 不支持

java - Eclipse Java 项目中的长文件夹路径是否有解决方法?

linux - 将 gvim 带到前台

data-structures - 用于构建文件系统的数据结构?

C : scanf and whitespaces. 我已经尝试了几乎所有的东西,目前正在学习结构

c - 如何在 c 中 exec() 我的程序?

c - 将幂视为 C 语言中 2^2 的写法

php - 在保护源代码的同时在 pc 或 Raspberry Pi 上运行本地网络服务器