创建副本memfd_create

问题描述 投票:0回答:1

我正在使用

memfd_create
将文件保存在内存中,但是当我
fork
时,该文件在两个进程之间共享。

是否可以将父级和子级解耦,以便子级在分叉后拥有文件的内存副本?比如当子进程修改文件时,父进程不受影响。

如果没有,我还需要哪些其他选项来将文件保留在内存中(同时仍然使用读/写/查找操作)并在 fork 上创建副本?

linux filesystems fork in-memory
1个回答
0
投票

我希望在这里不要错,但在孩子身上,

mmap
使用
memfd_file
作为标志,然后
MAP_PRIVATE
继承了
fclose
。这样子进程将拥有文件内容的自己的私有副本(写入时)。
如果您希望子级拥有自己的文件副本而不向子级添加更多虚拟内存,我认为您别无选择,只能让父级在

fd

之前为子级预先创建一个新的memfd ,将父级memfd的内容复制到子级memfd中,然后

fork
,最后让子级
fork
成为父级的
fclose
,父级关闭子级的
memfd
换句话说,让父级创建副本

© www.soinside.com 2019 - 2024. All rights reserved.