首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免FileSystem中的缓冲机制

问如何避免FileSystem中的缓冲机制
EN

Stack Overflow用户
提问于 2010-08-06 11:53:18
回答 2查看 248关注 0票数 0

以VirtualBox的虚拟磁盘为例,:如果VirtualBox没有避免来自主机os中的FileSystem的缓冲机制,那么来宾操作系统中的FileSystem就会将数据从内存转移到meory。

实际上,我想在用户空间(将所有目录和文件放在一个大文件中)编写文件系统。但是,如果我使用c api (如fread和fwrite ),os中的FileSystem将缓冲用户空间--文件系统read、write.But move -文件系统通过itself.If实现的数据--在os中没有避免FileSystem的缓冲机制,我的用户空间文件系统会将数据从内存转移到内存,这太糟糕了。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-06 13:04:10

stdio不支持这一点。

For *NIX:man open for O_DIRECT,man fadvise和man madvise。

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

票数 4
EN

Stack Overflow用户

发布于 2010-08-06 12:20:14

您的问题不是很清楚,但是如果您只想使用stdio而不需要缓冲,那么setbuf(file, NULL);将解决您的问题。一个更好的解决方案可能是完全避免使用stdio,并使用低级io原语read、write等(不是普通C的一部分,而是由POSIX指定的,并且在大多数非POSIX系统上也有几乎相同的版本)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3423485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档