【发布时间】:2014-02-06 04:28:57
【问题描述】:
我经历了this blog 和this videocast。在 Windows 中,如果我想检索指定进程的虚拟地址空间内的一系列页面的信息,我可以使用 WinAPI VirtualQueryEx method:
MEMORY_BASIC_INFORMATION meminfo;
unsigned char *addr = 0;
for(;;)
{
if(!VirtualQueryEx(hProc, addr, &meminfo, sizeof(meminfo)))
break;
if(meminfo.State & MEM_COMMIT)
{
//collect some data from meminfo
}
addr = (unsigned char*)meminfo.BaseAddress + meminfo.RegionSize;
}
我想知道如何使用系统调用在 Linux 中获取类似的信息集,但我不清楚如何使用 C/C++ 在 Linux 下收集此类数据。当有人建议查看/proc/<pid>/mem 或/proc/<pid>/maps 文件时,我浏览了this thread。是好的方向吗?应该如何看待与此处提供的最接近的实现,但对于 Linux?
【问题讨论】:
标签: c++ c linux winapi memory-management