c - 如何为 mmap 选择固定地址?

标签 c linux mmap

mmap() 可以选择性地提供固定位置来放置 map 。我想映射一个文件,然后在每个程序的相同虚拟地址上将其提供给几个不同的程序。我不在乎地址是什么,只要他们都使用相同的地址即可。如果需要,地址可以由其中之一在运行时选择(并通过其他方式与其他人通信)。

Linux 是否保证我可以映射到未使用(由应用程序和内核)的内存区域?我怎样才能找到一个在多个正在运行的应用程序中可用的地址?

最佳答案

不是真的,不是。由于现代 Linux 系统上的地址空间随机化,因此很难保证可以使用或不可以使用哪些地址。

此外,如果您正在考虑使用 MAP_FIXED,请注意您需要非常小心,因为它会导致 mmap 取消映射可能已经映射到该地址的任何内容,该地址通常是非常糟糕的事情。

我真的认为您需要为您的问题找到另一种解决方案...

关于c - 如何为 mmap 选择固定地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6446101/

相关文章:

c - 如何分配页面大小对齐的内存?

c - 使用三角函数绘制实心圆

linux - 在我的操作系统中使用 Linux 内核

c - 写入 mmap 文件时出现总线错误

C:知道变量何时被读取或写入

linux - mmap 文件支持的映射与 Linux 中的匿名映射

c - 编译期间 C 中 pow() 的异常行为

c++ - 为什么我在 C++ 中得到 "error: expected ' }'"但在 C 中却没有?

linux - 在 Linux 中替换大文本字符串

c++ - 树莓派交叉编译——执行程序结束于 "Segmentation fault"