6
如果我的可執行文件調用dlopen
加載庫但忽略調用dlclose
,則庫將保持加載狀態,直到進程退出並且操作系統強制它卸載。如果從dlopen'd庫調用dlopen(),是否存在加載泄漏?
如果我加載a.so
它加載b.so
,然後調用dlclose
上a.so
,並操作系統卸載b.so
呢?
這與使用微軟等效的LoadLibraryEx
的類似場景相比如何?
如果我的可執行文件調用dlopen
加載庫但忽略調用dlclose
,則庫將保持加載狀態,直到進程退出並且操作系統強制它卸載。如果從dlopen'd庫調用dlopen(),是否存在加載泄漏?
如果我加載a.so
它加載b.so
,然後調用dlclose
上a.so
,並操作系統卸載b.so
呢?
這與使用微軟等效的LoadLibraryEx
的類似場景相比如何?
該應用程序只需要擔心應用程序加載直接。如果您加載a.so
,則需要關注的是卸載a.so
。
如果a.so
拒絕卸載b.so
,這是a.so
的問題,那麼您的應用不對此負責。 a.so
的作者需要一起採取行動,並用他們的圖書館解決問題。
謝謝。你知道這些信息可以在dl *'的文檔中找到嗎?我讀了http://linux.die.net/man/3/dlopen,但沒有找到它 – Kietz
我主要是Windows編程,而不是Linux/Unix,但我不認爲這需要正式記錄。所有模塊可以做的是負責本身加載庫。如果圖書館是第三方圖書館,第三方可能會根據某些設置,運行環境等加載1,2,3或無模塊,那麼該怎麼辦?您的應用程序是否會跟蹤第三方應用程序,黨的模塊和它在內部做什麼?當然不是。 – PaulMcKenzie
所以'LoadLibrary *'和'GetModuleHandle *'確實是這種情況?你能指出我的文件嗎? – Kietz