【问题标题】:Linux process: dynamically share a variable between two librariesLinux进程:在两个库之间动态共享一个变量
【发布时间】:2016-10-13 02:31:49
【问题描述】:

全部都是 c 代码,我有一个 linux Gnome 进程,它可能会加载两个库 libA.so 和 libB.so。

libA 需要导出一个全局变量 int varA。

只有当 libA 存在于进程中时,libB 才需要访问 varA。

如何在以下约束条件下做到这一点:

libB 不应链接到 libA。此外,该进程可能只加载 libB 而从不接触 libA。我不控制流程,因此流程源代码中不应存在任何代码。只允许 libB 中的代码:它需要检查进程中是否存在 libA,如果是,则需要访问 varA。如果 libA 不存在,libB 应该知道它无法访问 varA。

我正在考虑使用 g_module_open / g_module_symbol,但我认为它会强制加载我不想加载的 libA。如果 libA 存在,我如何以编程方式在 libB 中检查,然后仅在这种情况下访问 varA?

【问题讨论】:

    标签: linux shared-libraries gnome dynamically-generated


    【解决方案1】:

    dl_iterate_phdr 和 dlsym 是用于解决此问题的 API。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 2013-06-20
      • 1970-01-01
      相关资源
      最近更新 更多