【发布时间】:2012-04-24 06:41:34
【问题描述】:
我有一个为 Windows 平台维护的应用程序套件。我最近向共享库添加了一些代码,以在应用程序完成后删除目录。在一个应用中,删除成功;另一方面,我收到一条消息,告诉我该文件正在被另一个进程使用。
下载 Process Explorer 后,我了解到我已经预料到的情况,即持有该文件夹的进程是试图删除它的进程。
当我在谷歌上搜索答案时,我看到的只是“您需要下载 XYZ 以找出保存文件的进程,然后关闭该进程”,其中“XYZ”是 Unlocker、Process Explorer 等。我知道保存文件的进程,但如果我终止它,它如何删除文件夹?
有没有人知道如何找到打开文件夹的代码?在可用于查找哪些进程正在使用哪些文件的工具中,是否可以使用任何工具来查找该文件夹在进程中的哪个位置打开?
【问题讨论】:
-
如果你在你的程序中打开了一个文件,你必须在删除它之前关闭它。如果您需要更精确的帮助,您应该发布一些代码
-
也许是写在那个目录的代码?您如何看待发布该代码?
-
我会首先检查我的程序堆栈中是否有任何
fstream对象,以及它们是否已关闭。 -
如果您的应用程序将文件夹设置为当前文件夹(使用
chdir或等效文件夹),您可能会收到此错误,因此请确保在尝试将其删除之前已将当前文件夹设置在其他位置。在尝试删除文件夹之前进行检查应该只是几行代码。除此之外,IMO,在拥有应用程序源的情况下尝试查找软件或工具是愚蠢的。搜索您正在打开文件或尝试删除文件或文件夹的位置的来源;您可以通过简单的grep找到它们,这比您找到工具并学习如何使用它要快得多。
标签: c++ windows locked-files