使用cat /proc/进程id/maps 查看进程内存映射

本文介绍了如何通过`cat /proc/进程id/maps`命令来查看Linux进程的内存映射情况,详细解析了映射文件的6列内容,包括地址、权限、偏移量等,并解释了不同内存区域如代码段、数据段、堆和栈的映射原理。同时,提到了`/proc/进程id/statm`用于查看进程内存状态的另一种方法。
摘要由CSDN通过智能技术生成

proc/<PID>/maps
查看进程的虚拟地址空间是如何使用的。
该文件有6列,分别为:
地址:库在进程里地址范围
权限:虚拟内存的权限,r=读,w=写,x=,s=共享,p=私有;
偏移量:库在进程里地址范围
设备:映像文件的主设备号和次设备号;
节点:映像文件的节点号;
路径: 映像文件的路径
每项都与一个vm_area_struct结构成员对应

C语言代码

#include <stdio.h>  
#include <stdlib.h>         
int q[200];         
int main(void)  {    
int i, n, *p;    
p = (int *) malloc(sizeof(int));    
scanf("%d", &n);    
for (i=0; i<200; i++)      
q[i]=i;               
printf("%x %x %x %x %x \n", main, q, p, &i, scanf);             
return 0;         
}

 

编译成a.out文件

执行该文件

#./a.out

查看执行该文件对应的进程

#ps au

可以看到2200就是我们需要的pid

#cat /proc/2200/maps

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值