在我的应用程序中,使用C语言编写,在Windows-XP下: 如何检查文件是否已被其他应用程序打开? 一种选择是重命名文件,并检查它是否重命名。 另一种选择是以附加方式打开文件。 但这些选项非常耗时。 是否有其他不那么耗时的解决方案来解决这个问题?
在我的应用程序中,使用C语言编写,在Windows-XP下: 如何检查文件是否已被其他应用程序打开? 一种选择是重命名文件,并检查它是否重命名。 另一种选择是以附加方式打开文件。 但这些选项非常耗时。 是否有其他不那么耗时的解决方案来解决这个问题?
以独占模式打开文件。
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);
}
CreateFile(..., GENERIC_READ,...,OPEN_EXISTING...)
将保证调用成功,即使其他十几个进程已经以FILE_SHARE_READ访问模式打开了该文件。来源 - Mike Sherrill 'Cat Recall'