答案 0 :(得分:5)
自 Linux 内核 3.17(2014 年 10 月发布)以来,您可以使用 memfd_create
系统调用来创建由匿名内存支持的文件描述符。然后多次映射同一区域,如上述答案中所述。
请注意,在 glibc 2.27(2018 年 2 月发布)中添加了 memfd_create
系统调用的 glibc 包装器。 glibc manual 还描述了如何使用返回的描述符创建到同一底层内存的多个映射。
答案 1 :(得分:3)
答案 2 :(得分:3)
我想如果你不喜欢Sys V共享记忆,你可以使用POSIX shared memory objects。它们不是很受欢迎,但至少可以在Linux和BSD上使用。
使用shm_open
获得fd后,您可以立即致电shm_unlink
。然后,没有其他进程可以附加到同一共享内存,您可以mmap
多次。尽管如此,仍有一小部分比赛时间。
答案 3 :(得分:1)
如果您是root用户,可以mmap("/dev/mem", ...)
,但新内核中有警告,请参阅accessing mmaped /dev/mem?