Получение списка библиотек, которыми пользуются, рабочим процессом (Unix)

Я должен узнать, какие библиотеки процесс Unix загрузил и мог бы использовать повсюду, это - время жизни. Это возможное и как. Или еще лучше, я сделал, чтобы библиотека назвала, и я должен узнать, какие процессы используют ее, это возможное.

На той же ноте, это возможный быть уведомленным некоторые как, когда процесс Unix запускается и когда это завершено. Они не были бы дочерними процессами моего процесса, я просто должен знать глобально.

Обновление:

Я думаю, что не дал достаточно информации. Unix, о котором я говорил, был MacOS X (даже при том, что некоторые говорят не действительно полностью Unix), и я искал способ найти загруженные библиотеки, которые имеет процесс, и я должен сделать это в C/C++.

30
задан Mikel 5 April 2012 в 20:51
поделиться

3 ответа

Если LSOF не установлен, вы можете просто Cat / Proc / $ PID / MAPS

Вы также можете проверить на файл дисков с LDD, чтобы увидеть, какие они откроются (но это не показывает библиотеки, открытые динамически используемым dlopen ()).

Что касается мониторинга новых процессов, вы можете добавить inotify Watch On / ProC для мониторинга создания / уничтожения новых числовых только каталогов.

Обновление: Inotify On / Proc не работает, но есть видимо, видно, см. Эта тема

11
ответ дан 27 November 2019 в 23:20
поделиться

можно использовать lsof. Дополнительную информацию смотрите в man-странице. Другой инструмент - strace. Чтобы проверить, запущен ли процесс, можно использовать ps -ef, подключенный к grep, или такие инструменты, как pgrep. Проверьте, не выходит ли возвращаемое значение из строки или нет.

5
ответ дан 27 November 2019 в 23:20
поделиться

Solaris имеет pldd . Для Linux вы можете вызвать ldd для исполняемого файла или pmap для запущенного процесса или заглянуть в / proc / PID / maps для отображенных библиотек.

41
ответ дан 27 November 2019 в 23:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: