我向后移植了一段使用虚拟内存技巧的代码,该代码涉及传递给mmap
的文件描述符,但没有挂载点。拥有物理文件将是此应用程序中不必要的开销。原始代码使用memfd_create
,这很棒。
由于Linux 2.6没有memfd_create
或O_TMPFILE
的{{1}}标记,我目前正在使用open
创建一个文件,然后取消关联它没有先关闭它。这很有效,但它根本不会让我高兴。
有没有更好的方法来获取mkstemp
目的的文件描述符,而无需触及2.6中的文件系统?
在有人说" XY问题之前,"我真正需要的是两个不同的虚拟内存地址到内存中的相同数据。这是通过mmap
将相同的匿名文件实现到两个不同的地址来实现的。任何其他" Y"到我的" X"也欢迎。
由于
答案 0 :(得分:0)
我考虑了两种方法:
/dev/shm/
而不是/tmp/
shm_open
获取文件描述符。 虽然与手头的具体问题无关,但并不保证所有发行版都存在/dev/shm/
,所以#2对我来说更正确。
为了不必担心共享内存对象的唯一名称,我只生成UUID。
我想我对此很满意。
喊出@NominalAnimal。