Linux 在mmap相同文件之后删除tmpfs(/dev/shm)中的文件

Linux 在mmap相同文件之后删除tmpfs(/dev/shm)中的文件,linux,mmap,tmpfs,Linux,Mmap,Tmpfs,我做了一些搜索,但没有找到类似的问题。 以下是我的步骤: 将文件复制到/dev/shm(tmpfs) 用锁映射那个文件 从该文件中读取数据 删除该文件 步骤4之后,以前加载的数据仍然可用,为什么? 在Unix上,文件的数据不会被删除,除非每个剩余进程都关闭/删除它 由于您已经打开了文件,并且有一个活动句柄或映射到该文件,因此您可以继续读取和写入文件数据,只要您愿意。在您关闭它之前,它不会被释放。但它确实会从tmpfs系统中消失,并且数据仍然存在于内存中,这是怎么发生的?文件数据仍然存在于文件系统

我做了一些搜索,但没有找到类似的问题。 以下是我的步骤:

  • 将文件复制到/dev/shm(tmpfs)
  • 用锁映射那个文件
  • 从该文件中读取数据
  • 删除该文件
  • 步骤4之后,以前加载的数据仍然可用,为什么?
    在Unix上,文件的数据不会被删除,除非每个剩余进程都关闭/删除它


    由于您已经打开了文件,并且有一个活动句柄或映射到该文件,因此您可以继续读取和写入文件数据,只要您愿意。在您关闭它之前,它不会被释放。

    但它确实会从tmpfs系统中消失,并且数据仍然存在于内存中,这是怎么发生的?文件数据仍然存在于文件系统中,无法通过文件名访问它。这就如同如何重置C++ +CudioSydypPTR <代码>而不影响RAM中的对象,只要其他东西保持它活着。