在Windows-XP下用C语言编写的应用程序中:如何检查文件是否已被其他应用程序打开?一种选择是重命名该文件,并检查它是否被重命名。另一种选择是打开要追加的文件。但这些选项非常耗时。有没有其他更省时的解决方案呢?
发布于 2013-03-24 20:29:41
在exclusive mode中打开一个文件。
HANDLE file = CreateFile(_T("MyFile"), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL);
if (file != INVALID_HANDLE_VALUE)
{
// file is not used by anyone else
CloseHandle(file);
}发布于 2013-03-24 20:36:16
Windows API中不存在用于检查函数是否在其他应用程序中打开的函数。如果它确实存在,它将受到竞争条件的影响。
假设您首先检查了一个文件是否已经打开,结果返回的结果是该文件当前未打开。然后你继续打开它,但在此期间,其他人已经打开了。则您的打开尝试将失败。
因此,要知道是否可以打开文件,唯一的方法就是尝试这样做。如果打开文件的方式阻止了您尝试打开它,则该尝试将失败。
https://stackoverflow.com/questions/15596944
复制相似问题