Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
28 / 27 / 7
Регистрация: 11.06.2011
Сообщений: 387
1

Как из загружаемой библиотеки узнать собственный путь ?

27.11.2017, 11:00. Показов 2526. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть программа которая динамически грузит .so. Как из этих библиотек узнать откуда они были загружены ?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2017, 11:00
Ответы с готовыми решениями:

Как узнать прямой линк программы загружаемой через web -инсталлятор ?
Доброго времени суток! Как узнать прямой линк программы загружаемой через web -инсталлятор ? ...

Как вывести в окно textBox собственный путь расположения приложения?
У меня еще вопросик :) Как вывести в окно textBox собственный путь расположения приложения ? ...

Как получить путь до текущей библиотеки?
Добрый день. Создал dll библиотеку и провожу ее контроль целостности с помощью CRC32, но вот...

Библиотеки или собственный движок
Здравствуйте. Раньше, я долго выбирал язык программирования для разработки игр. В итоге, несколько...

6
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
27.11.2017, 20:30 2
Bash
1
cat /proc/$(PID)/cmdline
0
28 / 27 / 7
Регистрация: 11.06.2011
Сообщений: 387
28.11.2017, 03:24  [ТС] 3
COKPOWEHEU, Разве мы этим не узнаем путь до бинарника, а не до библиотеки ?
0
1241 / 960 / 379
Регистрация: 02.09.2012
Сообщений: 2,936
28.11.2017, 05:23 4
Лучший ответ Сообщение было отмечено admsasha как решение

Решение

Попробуйте dlopen и dlinfo. Не знаю, сработает ли из бибилиотеки получение адреса на саму себя, или может вернет что-то из процесса.
1
28 / 27 / 7
Регистрация: 11.06.2011
Сообщений: 387
28.11.2017, 07:36  [ТС] 5
grgdvo, Вот спасибо ! Через запрос RTLD_DI_ORIGIN получилось получить путь именно библиотеки, а не бинарника. Теперь осталось придумать как узнать собственный handle
0
1241 / 960 / 379
Регистрация: 02.09.2012
Сообщений: 2,936
28.11.2017, 19:28 6
считаю немного некорректной формулировку "собственный". библиотека живет в пространстве процесса, в память которого она маппируется и связывается с остальным кодом процесса. у нее вообщем-то нет ничего собственного.
возможно в вашем случае будет эффективнее и быстрее просмотреть содержимое файла /proc/<PROCID>/maps.
вызываем getpid и далее шерстим указанный файл на известное имя
0
28 / 27 / 7
Регистрация: 11.06.2011
Сообщений: 387
29.11.2017, 03:11  [ТС] 7
Ну вот я открываю библиотеку
C++
1
void* handle = dlopen("libs/test.so", RTLD_LAZY);
handle будет же лично библиотеки, а не всего процесса. Вот я его и хочу получить из самой библиотеки.

А как узнать собственное имя библиотеки ?
0
29.11.2017, 03:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2017, 03:11
Помогаю со студенческими работами здесь

Alpha Controls: как добавить путь к исходникам библиотеки?
Установлен Alpha Controls. Программа работает хорошо, но при отладке на строчке ...

Подключение сторонней библиотеки - как указать путь к .dll файлам
Не могу разобраться как указать путь к .dll файлам пробовал следующее: прописывать в свойствах...

Как узнать путь к картинкам?
нашел на сайте конструкцию css (нужно картинки извлечь) как узнать путь к картинкам если так ...

Как узнать путь к файлу?
Привязал к таблице файлы: OLE1.OLETypeAllowed = acOLELinked OLE1.SourceDoc = &quot;C:\Documents and...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru