我想找到低级C/C++ API,相当于linux系统中的"write",没有缓冲区.有吗?
缓存的I/O如fread,fwrite不是我想要的.
使用FILE_FLAG_NO_BUFFERING选项查看CreateFile
http://www.codeproject.com/Articles/51678/Improve-responsiveness-in-Windows-with-the-FILE_FL
防止交换缓存的唯一方法是使用FILE_FLAG_NO_BUFFERING
标志打开文件.但是,这要求磁盘I/O请求具有可被扇区大小(512到4096字节)整除的大小,这将需要大量重写依赖于能够请求不同大小的大多数应用程序.
这个项目包含了下拉式的包装,提供CreateFile_NB()
,ReadFile_NB()
,WriteFile_NB()
和CloseHandle_NB()
函数照顾排队和关闭文件打开时写入调整文件的大小.
http://msdn.microsoft.com/en-us/library/cc644950(v=vs.85).aspx
使用CreateFile函数打开或创建文件时,FILE_FLAG_NO_BUFFERING
可以指定该标志以禁用从文件读取或写入文件的数据的系统缓存.虽然这样可以完全和直接地控制数据I/O缓冲,但在文件和类似设备的情况下,必须考虑数据对齐要求.