c -/dev/shm中的文件用ftruncate增长但不写入时会占用内存吗?

标签 c linux posix shared-memory

我正在使用 mmap 创建共享内存段,我想知道是否可以预先创建我可能在/dev/shm 中使用的所有段而不触发任何内存使用。我怀疑这可能是可能的原因是我知道大多数文件系统都有全零页面的概念,并且当您在执行任何写入之前最初增长文件时,可能会因为这些“而使文件实际上不会占用空间”孔页。但对于 tmpfs(/dev/shm 文件系统)来说是这样吗?只要不写入数据,我可以在/dev/shm 中疯狂创建大文件而不触发内存使用吗?

最佳答案

在 Linux 上,tmpfs 文件系统支持稀疏文件。仅调整文件大小不会分配内存(超出内部 tmpfs 数据结构)。就像支持稀疏文件(有漏洞的文件)的常规文件系统一样,您要么必须实际写入数据,要么使用 Fallocate 来分配后备存储。据我所知,从 Linux 2.6 开始就是这样。

关于c -/dev/shm中的文件用ftruncate增长但不写入时会占用内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58571685/

相关文章:

c - 将不需要的数据保存到错误文件

c++ - (x ^ 0x1) != 0 是什么意思?

c++ - cpp : eclipse doesn't recognize 'long long' type

linux - bash:如何在同一位置回显字符串

macos - 在运行时在Mac OS X上设置进程名称

c - 开源 TCP 服务器框架

c++ - libmediainfo 有替代方案吗?

linux - AwesomeWM 客户端创建/删除回调

c - 尽管管道关闭,读取仍继续阻塞

c - POSIX信号量:同步问题