У меня есть TCP-сервер, который принимает имя общей библиотеки и выполняет его с помощью dl
библиотека.
По какой-то причине (обработчик сигнала не вызывается для dlopen или dlclose) Я использую dlopen()
с RTLD_NODELETE
которые избегают dlclose()
звонить . Мой вопрос
1. Что происходит в следующем случае:
— Первый раз я позвонил dlopen('myLib.so', RTLD_LAZY | RTLD_NODELETE)
— Моя библиотека загрузилась и вызвала некоторую функцию foo()
который присутствует в myLib.so
— В следующий раз я обновлю свой foo()
определение. Тогда еще раз, если я позвоню dlopen('myLib.so', RTLD_LAZY | RTLD_NODELETE)
тогда будет мой dlopen
загрузить новую библиотеку или повторно использовать старую
2. Предположим, что если все идет хорошо, то делай dlopen('xxxx.so', RTLD_LAZY | RTLD_NODELETE)
вызвать утечку памяти, если я позвоню с n
номер библиотеки т.е. xxxx.so
может быть a.so
,b.so
,c.so
,...
, n.so
Уже проверил dlopen / dlsym / dlclose (dlfcn.h) вызывает утечку памяти но мой вопрос для множественной загрузки общего объекта
Пожалуйста, игнорируйте отступ. Я новичок в стеке над потоком. Пожалуйста, не ставьте отрицательные оценки
Задача ещё не решена.
Других решений пока нет …