【问题标题】:delete file in tmpfs(/dev/shm) after mmap the same file在 mmap 同一文件后删除 tmpfs(/dev/shm) 中的文件
【发布时间】:2018-08-13 18:50:03
【问题描述】:

我进行了一些搜索,但没有找到类似的问题。 这是我的步骤:

  1. 将文件复制到 /dev/shm (tmpfs)
  2. mmap 带锁的文件
  3. 从该文件中读取数据
  4. 删除文件

在第4步之后,之前加载的数据仍然可用,为什么? 提前致谢

【问题讨论】:

    标签: linux mmap tmpfs


    【解决方案1】:

    在 Unix 上,文件的数据不会被删除,直到所有剩余的进程都关闭/munmaps。

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

    【讨论】:

    • 但是它确实从tmpfs系统中消失了,数据还在内存中,这是怎么回事?
    • 文件数据仍然存在于文件系统中,只是不再通过文件名访问。这就像您如何重置 C++ shared_ptr 而不影响 RAM 中的对象,只要其他东西保持它的生命。
    猜你喜欢
    • 2022-10-13
    • 1970-01-01
    • 2018-12-17
    • 2013-06-03
    • 1970-01-01
    • 2015-05-28
    • 1970-01-01
    • 2021-12-25
    • 2012-04-02
    相关资源
    最近更新 更多