我尝试使用dlopen加载带有标志RTLD_NODELETE的动态库,以便保持全局变量,并确保它们在下次使用dlopen重新加载时不会重新启动。
但是,当我想在库中的某些函数更新时重新加载库时,dlopen(在重新加载之前,我调用了接口dlclose)似乎无法工作。这些函数使用相同的旧代码运行。
所以我现在很困惑。
在使用dlopen重新加载全局变量时,如何将全局变量保存在动态库中。(更新函数,但不更改变量。)
发布于 2013-08-29 06:36:22
所以我现在很困惑。
这正是RTLD_NODELETE的意思:在这样一个库上的dlclose (实际上)是不操作的。由于代码的行为实际上就好像dlclose从未被调用过一样,因此也难怪后续的dlopen也没有重新加载代码(它实际上也变成了一个非操作)。
当使用dlopen重新加载时,如何将全局可见病毒保存在动态库中。(更新功能,但不更改病毒)
你不能这么做。
https://stackoverflow.com/questions/18372797
复制相似问题