我可以使用不同的标志打开同一个文件两次(使用CreateFileA)(在这种情况下,一个使用FILE_FLAG_NO_BUFFERING,一个没有)?
详细说明,情况就是这样:在启动期间,我创建了一个临时文件(使用FILE_FLAG_DELETE_ON_CLOSE)。我按顺序填写它,我不想担心在这部分做无缓冲的IO。然后,在进程运行时,我想使用无缓冲的IO访问该文件,因为我有自己的缓存逻辑。因此,我想再次打开同一个文件,这次使用FILE_FLAG_NO_BUFFERING,然后关闭旧句柄。我想以这种重叠的方式做到这一点有两个原因:
答案 0 :(得分:1)
请记住在共享模式中包含FILE_SHARE_DELETE。我认为FILE_FLAG_DELETE_ON_CLOSE是唯一影响的不仅仅是“你的”句柄。
答案 1 :(得分:0)
这不是很荒谬吗?
你想要打开两次,因为如果在关闭上一个句柄后打开,有人可能会弄乱你的文件。但现实是,你正在试图弄乱你的文件。
如果不能保证独家文件访问,你怎么能阻止别人做某事?但是,如果你专门打开如何重新打开文件?
AFAIK,如果文件已经完全打开,则不允许打开,即使是在同一个过程中也是如此。