如何删除被锁定的文件?

use*_*749 2 mfc locking file delete-file

我正在Windows下用C++ MFC编写桌面应用程序.

应用程序创建索引文件,并一次又一次地向其写入信息.

如果应用程序崩溃,则下次应用程序启动时,它将删除已崩溃的索引文件并创建一个新文件.我认为在某些情况下,索引文件将被锁定.如果我无法删除锁定的索引文件,那将是一场灾难.

我怎样才能保证我可以删除该文件并创建一个新文件?我可以确保没有其他应用程序打开索引文件.仅因应用程序崩溃而无法删除它.

任何人都可以帮忙吗?

Ric*_*dle 7

如果没有进程保持文件打开,则无法保持锁定状态.您可能会发现,只要您的崩溃过程确实死亡(而不是挂起),您就没有问题.

如果您确实需要确保可以从一个进程中删除该文件,而另一个进程将其打开,则需要使用这两个进程使用该FILE_SHARE_DELETE标志打开它.

  • 如果没有一个进程打开那么它就不会被锁定,这不完全正确.在一些奇怪的情况下,Windows无法失去锁定.这是一个非常罕见的问题,但我已经看到它发生了很多次,甚至一次在Win 7下.但是从来没有想过如何重新​​创建它.它似乎只发生在崩溃上. (2认同)