Có. Man page dlopen(3) linux nói:
If the same library is loaded again with dlopen(), the same file
handle is returned. The dl library maintains reference counts for
library handles, so a dynamic library is not deallocated until
dlclose() has been called on it as many times as dlopen()
has succeeded on it.
BTW, trên các hệ thống Linux, bạn có thể dlopen rất nhiều (nhiều hàng chục ngàn) của các thư viện chia sẻ, như ví dụ của tôi manydl.c chứng minh. Giới hạn chính là không gian địa chỉ. Vì vậy, thực tế, không làm phiền về dlclose
-công cụ là có thể.
(trừ khi dlopen-ed bạn chia sẻ các thư viện có tốn nhiều nhà xây dựng hoặc destructor chức năng kỳ lạ hoặc tài nguyên)
gia tăng trong tháng 12 năm 2017:
Chú ý rằng những gì có liên quan là chuỗi đường dẫn chính xác thông qua đến dlopen
. Vì vậy, nếu bạn sử dụng "./foo.so"
và "././foo.so"
(hoặc "../foosymlink.so"
trong đó foosymlink.so
là liên kết tượng trưng đến foo.so
) các tay cầm dlopen-ed khác nhau và trong một số trường hợp hành vi lạ của hai trường hợp của thư viện được chia sẻ đó có thể xảy ra.
Nguồn
2012-08-27 19:40:23
.. và tôi chỉ đọc trang người đàn ông này, tại sao tôi cũng không đọc đoạn này? Hmpf .. tốt, cảm ơn bạn không có ít hơn để trả lời câu hỏi ngu ngốc của tôi :) – mageta