有没有人在Linux kernel 2.6上成功地mmap了/proc/pid/mem文件?我得到了一个ENODEV(没有这样的设备)错误。
char * map = mmap(NULL, PAGE_SIZE, PROT_READ, MAP_SHARED, mem_fd, offset);
我在调试时查看了/proc/pid/maps文件,验证了当执行到达此调用时,offset的值为堆栈顶部减去PAGE_SIZE的值。我还使用ptrace验证了mmap将errno设置为ENODEV。
xzlaal3s1#
参见/usr/src/linux/fs/proc/base.c中的proc_mem_operations:/proc/.../mem不支持mmap。可以通过linux-source软件包或直接从kernel.org获得相应的linux内核源代码来安装
/usr/src/linux/fs/proc/base.c
proc_mem_operations
/proc/.../mem
mmap
linux-source
1条答案
按热度按时间xzlaal3s1#
参见
/usr/src/linux/fs/proc/base.c
中的proc_mem_operations
:/proc/.../mem
不支持mmap
。可以通过
linux-source
软件包或直接从kernel.org获得相应的linux内核源代码来安装