当使用dlopen重新加载时,如何将全局变量保留在动态库中

时间:2013-08-22 06:06:28

标签: linux dlopen

我尝试使用dlopen加载带有标记RTLD_NODELETE的动态库,以便保留全局变量,并确保在下次使用dlopen时不会重新启动它们重装它。

但是当我想在库中的某些函数更新时重新加载库时, dlopen(在重新加载之前我称之为接口dlclose)似乎不起作用。这些函数使用相同的旧代码运行。

所以我现在很困惑。

使用dlopen重新加载时,如何将全局变量保留在动态库中。 (更新函数但保持变量不变。)

1 个答案:

答案 0 :(得分:0)

  

所以我现在很困惑。

这正是RTLD_NODELETE的含义:dlclose在这样的库上(实际上)是无操作。由于代码有效的行为就好像从未调用过dlclose一样,因此后续的dlopen不会重新加载代码也就不足为奇了(它实际上变成了无操作。)

  

当使用dlopen重新加载时,如何在动态库中保留全局变量。 (更新功能但不改变virables)

你不能。