在/proc/pid/mem上使用mmap

16

有人成功地使用 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文件确认,在执行此调用时,偏移量具有堆栈顶部减去PAGE_SIZE的值。我还使用了ptrace进行验证,发现mmap将errno设置为ENODEV。

1个回答

26

非常感谢!在我的Ubuntu x86_64中似乎没有那个base.c文件——我的/usr/src目录是空的。你用的是哪个发行版? - Amittai Aviram
@Amittai:你可以安装linux-source软件包,或者直接从kernel.org获取Linux内核源代码。 - ephemient

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接