我需要获取当前应用程序的所有内存映射库的文件名。目前我正在通过 vm_region 浏览所有映射的库。遗憾的是,它没有提供有关当前区域文件名的信息。有没有办法在不对 vmmap 执行 popen 的情况下在 c 中获取此信息?
最佳答案
- 对于常规
mmap
编辑的文件,您可以使用proc_regionfilename()
- 对于来自 dyld_shared_cache 的库,你得到“/private/var/db/dyld/dyld_shared_cache_x86_64”作为路径,需要找到实际的库名称。
- https://code.google.com/p/psutil/issues/detail?id=260推测您可以解析 dyld_shared_cache_*.map 文件来获取此信息。
- https://stackoverflow.com/a/15714052/1026指向另一个实现,http://newosxbook.com/src.jl?tree=listings&file=12-1-vmmap.c
关于c - 内存映射库的文件名 osx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8240436/