文件监控 Linux Windows
来源:互联网 发布:南京行知中学升学率 编辑:程序博客网 时间:2024/04/30 00:53
Linux : inotify
Windows: ReadDirectoryChangesW
UINT ThreadWatcher(LPVOID pParam){CFileWatcherDlg * dlg = (CFileWatcherDlg*)pParam;//dlg->MessageBox(dlg->m_dir);HANDLE hDir; char notify[1024]; DWORD cbBytes; CString path = dlg->m_dir;FILE_NOTIFY_INFORMATION *pNotify=(FILE_NOTIFY_INFORMATION *)notify; //GetCurrentDirectory(MAX_PATH,path.GetBuffer(MAX_PATH+1)); hDir = CreateFile( path, FILE_LIST_DIRECTORY, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, NULL); if (hDir == INVALID_HANDLE_VALUE) { dlg->PrintMsg("hDir:INVALID_HANDLE_VALUE,获得目录句柄失败,请选择正确的目录."); //dlg->m_edit.ReplaceSel("hDir:INVALID_HANDLE_VALUE\r\n"); return -1; } CString str;WCHAR wcFileName[1024]={0};DWORD dwFileNameLength ;char cFileName[1024] = {0};SetEvent(eventStarted);//release signalwhile (TRUE) { if(!dlg->bWatching)break; if(ReadDirectoryChangesW(hDir, ¬ify, sizeof(notify), true, FILE_NOTIFY_CHANGE_FILE_NAME| FILE_NOTIFY_CHANGE_LAST_WRITE , &cbBytes, NULL, NULL)) { //dlg->MessageBox("re");dwFileNameLength = pNotify->FileNameLength; memset(wcFileName, 0 , 1024);memcpy( wcFileName, pNotify->FileName, dwFileNameLength );WideCharToMultiByte( CP_ACP, 0, wcFileName, -1, cFileName, 1024, NULL, NULL ); switch(pNotify->Action) { case FILE_ACTION_ADDED: str.Format("Directory/File added - %s",cFileName); break; case FILE_ACTION_REMOVED:str.Format("Directory/File removed - %s",cFileName); break; case FILE_ACTION_MODIFIED: WaitForSingleObject(hMutex,-1);//waitingdlg->m_images.push_back(path+"\\"+cFileName);str.Format("STL list size=%d ", dlg->m_images.size());dlg->PrintMsg(str);ReleaseMutex(hMutex);//release str.Format("Directory/File modified - %s",cFileName); break; case FILE_ACTION_RENAMED_OLD_NAME: str.Format("Directory/File rename - %s",cFileName); break; case FILE_ACTION_RENAMED_NEW_NAME: str.Format("Directory/File new name - %s",cFileName); break; default: break; } dlg->PrintMsg(str); } }dlg->PrintMsg("End Watcher");return 0;}
其他:
通过rsync+inotify实现数据的实时备份 http://ixdba.blog.51cto.com/2895551/580280/
Linux inotify功能及实现原理
http://blog.csdn.net/myarrow/article/details/7096460Linux : inotify
Windows: ReadDirectoryChangesW
0 0
- 文件监控 Linux Windows
- windows 监控文件目录
- Windows文件变更监控
- Windows文件变更监控
- windows 文件监控
- windows文件监控
- windows 监控文件目录
- Linux文件监控
- Linux监控文件事件
- Linux文件监控
- Linux 监控日志文件
- VC 实现Windows 文件监控
- loadrunner 监控windows和linux
- LoadRunner监控Windows ,linux , Apache
- 文件监控系统设计(2)-"Windows 文件监控API"
- linux开发 -- 文件监控 inotify
- Linux操作系统文件变化监控
- .NET4 Windows Service 监控磁盘文件
- Java中的final
- seam2.2根据已有数据库(postgresql)生成项目
- UploadDialog使用完整代码
- C#和Java中的一些不同
- mac组播
- 文件监控 Linux Windows
- 三种SQL分页语句
- Linux中硬链接文件和软链接文件的区别
- android 4.2以上版本永不休眠
- mysql的索引类型及优化
- python3 xml.dom.pulldom 解析xml
- A Game Between Alice and Bob(zoj 3529)
- 25个必须记住的SSH命令
- Protel DXP 2004安装 - Windows XP经典软件系列