看板 C_and_CPP 關於我們 聯絡資訊
請問一下各位 要如何及時得知檔案有被更動呢 我使用的是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
diabloevagto:能夠住測試件,有變動就回傳嗎? 05/07 11:36
stupid0319:先查修改日期,再查MD5 05/07 12:01
ireullin:是的,我希望能有時間限制的阻塞住,有變動才傳回 05/07 12:24
stupid0319:Window的話,HOOK CreateFile Api的話,就OK了 05/07 12:40
Bencrie:Linux 的話 ... inotify 05/07 12:40
stupid0319:對WriteFile做監視,就知道有沒有被改了 05/07 12:42
kdjf:inotify最準沒錯XD 05/07 13:24
ledia:win32 api: ReadDirectoryChangesW 05/07 14:44
remmurds:.net framework: FileSystemWatcher 05/07 21:55