我有一个应用程序,可以跟踪目录中的更改并将其上载到服务器。
auto hdir = CreateFile(dir.c_str(), GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
for (;;)
{
vector<char> d(16384);
DWORD by = 0;
ReadDirectoryChangesW(hdir, d.data(), 16384, false, FILE_NOTIFY_CHANGE_LAST_WRITE, &by, 0, 0);
... // Process changes and upload them
}
但是,似乎ReadDirectoryChanges阻止了某些写访问。当Visual Studio在跟踪目录中启动项目时,它抱怨该目录需要管理员访问权限(但没有尝试写入任何内容,ReadDirectoryChanges()不会从我的应用程序返回)。
文件更新后,函数会正确返回并进行处理,但是我注意到有些时候Visual Studio在目录内创建了一个临时文件,可能是恢复文件。
此功能有什么问题?
答案 0 :(得分:0)
打开目录时,您仅共享读取访问权限,而不共享写入访问权限。添加links = [item['href'] for item in soup.select('[href^=http]')]
标志:
FILE_SHARE_WRITE
而且,您根本不检查错误。
auto hdir = CreateFile(..., FILE_SHARE_READ | FILE_SHARE_WRITE, ...);