[問題] 即時偵測檔案變動

看板C_and_CPP (C/C++)作者 (raison detre)時間14年前 (2012/05/07 11:35), 編輯推噓2(207)
留言9則, 7人參與, 最新討論串1/2 (看更多)
請問一下各位 要如何及時得知檔案有被更動呢 我使用的是select的方式 但是執行結果卻是一直回傳true 如果採用檢查檔案大小或是md5的方式 卻又必須一值loop他,吃掉了太多的系統資源 如果加了sleep,又不是真正的"即時" 請問大家都怎麼做呢 bool FileIO::IsModified(double waitsecond) { FD_ZERO(&m_set); FD_SET(m_fd, &m_set); double _sec = floor(waitsecond); struct timeval timeout; timeout.tv_sec = (long)_sec; timeout.tv_usec = (long)(waitsecond-_sec)*1000*1000; int _rc = ::select(FD_SETSIZE, &m_set, NULL, NULL, &timeout); if(_rc<0) return false; //throw "select failed"; if(_rc==0) return false; if(FD_ISSET( m_fd, &m_set)<=0 ) return false; return true; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.220.71.34

05/07 11:36, , 1F
能夠住測試件,有變動就回傳嗎?
05/07 11:36, 1F

05/07 12:01, , 2F
先查修改日期,再查MD5
05/07 12:01, 2F

05/07 12:24, , 3F
是的,我希望能有時間限制的阻塞住,有變動才傳回
05/07 12:24, 3F

05/07 12:40, , 4F
Window的話,HOOK CreateFile Api的話,就OK了
05/07 12:40, 4F

05/07 12:40, , 5F
Linux 的話 ... inotify
05/07 12:40, 5F

05/07 12:42, , 6F
對WriteFile做監視,就知道有沒有被改了
05/07 12:42, 6F

05/07 13:24, , 7F
inotify最準沒錯XD
05/07 13:24, 7F

05/07 14:44, , 8F
win32 api: ReadDirectoryChangesW
05/07 14:44, 8F

05/07 21:55, , 9F
.net framework: FileSystemWatcher
05/07 21:55, 9F
文章代碼(AID): #1FfqCNEV (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1FfqCNEV (C_and_CPP)