有没有人成功地使用Linux内核2.6 mmap’ing / 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。
见proc_mem_operations在/usr/src/linux/fs/proc/base.c:/proc/.../mem不支持mmap。
proc_mem_operations
/usr/src/linux/fs/proc/base.c
/proc/.../mem
mmap