有沒有辦法找出進程中動態庫的引用數量?即在一個應用程序中,許多模塊可能使用dlopen加載了相同的庫,而當模塊執行dlclose時,我們可以知道該庫是否真的被卸載,或者它的引用正在減少?有沒有辦法找到一個過程中動態庫的引用數量?
4
A
回答
2
從手冊頁:
dlclose()
功能dlclose()遞減的動態庫句柄句柄引用計數。如果引用計數下降到零,並且沒有其他加載的庫使用它中的符號,則動態庫將被卸載。
函數dlclose()在成功時返回0,在錯誤時返回非零值。
因此引用計數是自動完成的,但是這個調用是最後一個並且不卸載庫的事實沒有被指示。如果你需要的話,你需要數一數。
或者你可以dlopen
與RTLD_NOLOAD
後dlclose
:
不要加載庫。這可以用來測試庫是否已經駐留(dlopen()如果不是,則返回NULL,如果庫駐留則返回庫)。
(請注意,你需要再次dlclose()
它,如果你有一個參考,這是活潑的,所以一定要確保所有潛在的操作發生在一個單一的線或序列化。)
你可能對RTLD_NODELETE
選項感興趣:
不要在dlclose()期間卸載庫。因此,如果稍後用dlopen()重新加載庫,則庫的靜態變量爲 不會重新初始化。該標誌不是POSIX.1-2001中規定的 。
0
通過檢查文件/proc/self/maps
,可以檢查庫是否已從進程地址空間取消映射。
恐怕這可能是相當linux特定的,但它應該工作。
相關問題
- 1. 有沒有辦法找到accurev中促銷的最大數量?
- 2. 有沒有辦法在處理過程中更改引用的庫文件?
- 3. 有沒有辦法找到一年內使用PHP的週數?
- 4. 有沒有辦法var_dump一個變量?
- 5. 有沒有辦法訪問一個向量內的索引
- 6. 有沒有辦法在Android中關閉動態加載的庫?
- 7. 有沒有辦法動態查詢數據庫
- 8. 有沒有辦法動態改變一個按鈕的CSS類?
- 9. 有沒有辦法找到一個自定義的mongo dbpath?
- 10. 有沒有辦法使用Resque動態加載Ruby庫?
- 11. 有沒有辦法從MySQL數據庫動態檢索數據到Android微調?
- 12. 有沒有辦法從一個數據庫中刪除'sysmessages'表?
- 13. Kiwi:有沒有辦法讓一個動態數量的例子,由一個運行時變量定義?
- 14. 有沒有辦法啓動一個Express應用程序?
- 15. 在symfony中有沒有辦法讓一個沒有數據庫的實體?
- 16. 有沒有辦法通過JavaScript來設定一個PHP變量
- 17. 有沒有辦法做空安全的GORM動態查找器?
- 18. 有沒有辦法繞過一個沒有實現Serializable的類?
- 19. 有沒有辦法找到標準庫的應用程序的路徑?
- 20. 有沒有辦法找到一個DateTime變量相應的日曆?
- 21. 有沒有辦法讓@ModelAttribute動態?
- 22. 有沒有辦法找到瀏覽器的渲染引擎?
- 23. 有沒有辦法在一個數組
- 24. 有沒有辦法在一個數組
- 25. 有沒有辦法將兩個mongo集合索引到ElasticSearch中的一箇中?
- 26. 有沒有辦法使用動態編程來解決這個循環函數?
- 27. 有沒有辦法找到控件的所有者線程?
- 28. 有沒有辦法在Oz中存儲函數/過程調用?
- 29. 有沒有辦法將mysql數據庫中的所有數據複製到另一個數據庫中? (phpmyadmin)
- 30. 有沒有辦法通過枚舉在Rust中索引數組?