c++ - 用不同的标志打开同一个文件两次?

标签 c++ windows winapi

我能否使用不同的标志(在本例中,一个带有 FILE_FLAG_NO_BUFFERING,一个不带)打开同一个文件两次(使用 CreateFileA)?

详细来说,是这样的:在启动期间,我创建了一个临时文件(使用 FILE_FLAG_DELETE_ON_CLOSE)。我是按顺序填的,这部分不想做unbuffered IO。然后,在进程运行时,我想使用无缓冲 IO 访问该文件,因为我有自己的缓存逻辑。因此,我正在考虑再次打开同一个文件,这次是使用 FILE_FLAG_NO_BUFFERING,然后关闭旧句柄。我想以这种重叠的方式这样做有两个原因:

  1. 并发。如果我在打开新 handle 之前关闭旧 handle ,其他人可能会在此期间弄乱我的文件。
  2. FILE_FLAG_DELETE_ON_CLOSE 会在我关闭第一个句柄而不打开另一个句柄时删除我的文件。这是我可以解决的一个小麻烦。

最佳答案

请记住在共享模式中包含 FILE_SHARE_DELETE。我认为 FILE_FLAG_DELETE_ON_CLOSE 是唯一影响不仅仅是“您的”句柄的标志。

关于c++ - 用不同的标志打开同一个文件两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4686058/

相关文章:

c++ - 在Linux上为Windows构建GCC插件

windows - 将批处理标题设置为文件名

C++ WIN32 : Short multitasking example

python - 使 Tkinter 窗口成为非 Tkinter 窗口的子窗口

C++ 内存 - 是否需要删除使用 'new' 创建的原始类型变量?

c++ - 使用 ReadDirectoryChangesW C++ 重命名文件夹后获取旧名称和新名称

Objective-c 中的 C++ 矩阵

c++ - CreateWindowEx 显示中文乱码而不是原始文本

c++ - 使用自动类型推导时奇怪的 boost cpp_Int 行为

windows - 如何将 alt + f1 键分配给打开的 Windows 应用程序