如果从 dlopen 的库中调用 dlopen() 是否存在负载泄漏?
Is there a load leak if dlopen() is called from a dlopen'd library?
如果我的可执行文件调用 dlopen
来加载一个库但忽略了调用 dlclose
,该库将保持加载状态直到进程退出并且 OS 强制它卸载。
如果我加载 a.so
加载 b.so
,然后在 a.so
上调用 dlclose
,OS 是否也卸载 b.so
?
这与使用 Microsoft 等效方案的类似方案相比如何LoadLibraryEx
?
应用程序只需要担心应用程序加载的内容直接。如果你加载 a.so
,你只需要关心卸载 a.so
。
如果a.so
拒绝卸载b.so
,那是a.so
的问题,您的应用对此概不负责。 a.so
的作者需要齐心协力,解决他们图书馆的问题。
如果我的可执行文件调用 dlopen
来加载一个库但忽略了调用 dlclose
,该库将保持加载状态直到进程退出并且 OS 强制它卸载。
如果我加载 a.so
加载 b.so
,然后在 a.so
上调用 dlclose
,OS 是否也卸载 b.so
?
这与使用 Microsoft 等效方案的类似方案相比如何LoadLibraryEx
?
应用程序只需要担心应用程序加载的内容直接。如果你加载 a.so
,你只需要关心卸载 a.so
。
如果a.so
拒绝卸载b.so
,那是a.so
的问题,您的应用对此概不负责。 a.so
的作者需要齐心协力,解决他们图书馆的问题。