【问题标题】:mmap on /proc/pid/mem/proc/pid/mem 上的 mmap
【发布时间】:2011-07-10 03:14:30
【问题描述】:

有没有人成功地用 Linux 内核 2.6 映射 /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。

【问题讨论】:

    标签: c linux mmap procfs systems-programming


    【解决方案1】:

    proc_mem_operations in /usr/src/linux/fs/proc/base.c/proc/.../mem不支持mmap

    【讨论】:

    • 非常感谢!我的 Ubuntu x86_64 中似乎没有那个 base.c 文件——我的 /usr/src 目录是空的。你在运行什么发行版?
    • @Amittai:您可以安装linux-source 包或直接从kernel.org 获取Linux 内核源代码。
    猜你喜欢
    • 1970-01-01
    • 2014-01-01
    • 2014-10-01
    • 2014-02-24
    • 2011-06-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    相关资源
    最近更新 更多