c - 如何避免文件系统的缓冲机制

标签 c filesystems buffer virtualbox

以VirtualBox的虚拟磁盘为例:如果VirtualBox没有避开host os中FileSystem的buffer机制,guest os中的FileSystem会将数据从内存移动到meory。

事实上,我想在用户空间中编写一个文件系统(将所有目录和文件放在一个大文件中)。但是如果我使用c api如fread和fwrite,os中的文件系统会缓冲我的用户空间文件系统读、写的数据。但是我的用户空间文件系统已经实现了自己的缓冲机制。如果我没有避开os中文件系统的缓冲机制,我的用户空间-文件系统会把数据从内存移动到内存。太糟糕了。

有谁知道如何解决这个问题吗?

最佳答案

stdio 不支持。

对于 *NIX:man open对于 O_DIRECT,man fadviseman madvise .

对于 Windows,检查 CreateFile对于 FILE_FLAG_NO_BUFFERING。挖掘 CreateFileMapping 可能是个好主意也是。

关于c - 如何避免文件系统的缓冲机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3423485/

相关文章:

在 C 中使用链表创建稀疏矩阵

c - 尚未定义类型的数组(不完整元素类型)

java - 如何使用 Java 7 的新文件 API 检查路径是否指向现有文件?

c - 初始化没有大小的数组字面量

c - 输入从不存在的文件重定向到 fopen()

Java 7 标准 WatchEventKind.ENTRY CREATE 文件写入完成

macos - 如何在终端中创建 Mac OS X "Alias"类型文件?

c - 将文件写入磁盘并使用缓冲区时 C 中的段错误 11

c++ - std::cout 不会打印

c - 我是否正确应用了严格别名规则?