繁体   English   中英

用不同的标志两次打开同一文件?

[英]Opening the same file twice with different flags?

是否可以使用不同的标志(在这种情况下,一次使用FILE_FLAG_NO_BUFFERING,一次不使用)来两次打开同一文件(使用CreateFileA )?

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

  1. 并发。 如果在打开新手柄之前先关闭旧手柄,那么其他人可能会同时破坏我的文件。
  2. 当我关闭第一个句柄而不打开另一个句柄时,FILE_FLAG_DELETE_ON_CLOSE将删除我的文件。 这是我可以解决的一个小麻烦。

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

是不是很荒谬?

您想打开两次,因为如果在关闭上一个句柄之后打开,则可能会弄乱您的文件。 但是现实是您正试图弄乱您的文件。

如果不能保证专有文件访问,如何防止某人做某事? 但是,如果您仅打开文件,如何重新打开文件?

AFAIK,如果仅已打开文件,则不允许再打开,即使来自同一进程也是如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM