Linux进程:在两个库之间动态共享变量

时间:2016-06-12 16:49:22

标签: linux shared-libraries gnome dynamically-generated

所有的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?

1 个答案:

答案 0 :(得分:0)

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