2014-09-11 47 views
1

在Linux系统中,特定时间有很多进程正在运行,每个进程都依赖于一些动态库(共享对象)。这可以通过ldd命令找到。当进程运行时,共享对象必须在内存中。同样,Linux系统中的不同运行进程的内存中将会加载许多共享对象。如何在特定时间打印内存中的所有共享对象?

有什么办法可以列出所有这些共享对象吗?它可以用C语言编写吗?列出当前加载在内存中的所有共享对象是否可行?

+0

'这可以列出当前加载到内存中的所有共享对象吗?'遍历/ proc/中的所有映射文件并创建您需要的列表。 – 2014-09-11 10:46:55

回答

0

阐述skwllsp的评论:

 
    grep '\.so' /proc/*/maps | sort -k6 | uniq -f5 

从C,可拨打system()popen()用这个命令字符串。

0

编程从一个进程内(这是Linux GNU glibc特定),你可以使用dl_iterate_phdr(3);手册页中的示例正在做你想做的事。

相关问题