我正在寻找一种在 unmanaged c++ 中创建程序的方法,该程序等待文件解锁(因为它不再被使用)然后执行某些操作。我没有找到如何执行此操作的运气,我们将不胜感激!
更新:我可能已经回答了我自己的问题,请参阅下文并告诉我您的想法..
更新:真正重要的是文件是可写的,它是否仍在使用并不重要。
最佳答案
这样的事情会等待而不会浪费 cpu 周期。
HANDLE h = FindFirstChangeNotification("C:\Path to folder holding file", FALSE, FILE_NOTIFY_CHANGE_LAST_WRITE);
while(true)
{
if (CheckLockFile("C:\Path to file"))
{
// Do something
break;
}
WaitForSingleObject(h, APPROPRIATE_TIMEOUT_VALUE);
FindNextChangeNotification(h);
}
bool CheckLockFile(char* FilePath)
{
HANDLE fh = CreateFile(FilePath, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0,NULL);
if (fh == INVALID_HANDLE_VALUE)
{
return false;
}
CloseHandle(fh);
return true;
}
这假定锁定文件的应用程序已打开文件进行写入。
关于c++ - 我如何监控文件上的锁以查看它何时被释放? [C++],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/879530/