【发布时间】:2010-12-17 17:09:34
【问题描述】:
我有一个单线程程序(C++、Win32、NTFS),它首先创建一个相当长的临时文件,关闭它,打开读取,读取,再次关闭并尝试使用DeleteFile() 删除。
通常会顺利进行,但有时DeleteFile() 会失败,GetLastError() 返回 ERROR_ACCESS_DENIED。文件肯定不是只读的。它发生在任何大小的文件上,但概率随着文件大小而增加。
任何想法可能会锁定文件?我尝试使用 WinInternals 工具进行检查,没有发现任何可疑之处。
【问题讨论】:
-
您确定在尝试删除之前正确关闭了文件吗?你错过了任何把手吗?
-
正如我所说,我什至使用 WinInternals 工具进行了检查。所有打开都与关闭配对,但删除失败。并且添加 sleep for 1 sec 可以解决问题。
-
可能是 windows 有问题,但我对此表示怀疑。如果添加
sleep让它工作应该没问题^^ -
通常,如果在某处添加 sleep() 调用会使问题消失,则需要摆脱 sleep() 调用并正确解决问题。它会回来的。我从未见过这条规则的例外情况。
-
这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
标签: c++ file winapi delete-file