在Linux系统中,在特定时间运行许多进程,每个进程都依赖于某些动态库(共享对象)。这可以通过ldd命令找到。进程运行时,共享对象必须在内存中。同样,在Linux系统中的不同运行进程的内存中会加载许多共享对象。
有没有办法列出所有这些共享对象?它可以用C编程语言编写吗?列出当前在内存中加载的所有共享对象是否可行?
答案 0 :(得分:0)
阐述skwllsp的评论:
grep '\.so' /proc/*/maps | sort -k6 | uniq -f5
你可以用C命令system()
或popen()
。
答案 1 :(得分:0)
从进程内部以编程方式(这是Linux GNU glibc特定的),您可以使用dl_iterate_phdr(3);手册页中的示例正在执行您想要的操作。