如何用c++監控windows和linux文件夾中文件的變化,有沒有什麼api可以讓系統在保存文件的時候通知程序?
01-03
linux 提供了inotify機制來監視文件事件的
win下面明顯有
FindFirstChangeNotification和 ReadDirectoryChanges
這兩個api可以用來監控文件變化相關工具參考 FileMonlinux和mac我不清楚, 只做過windows
windows下面監控文件變動就那麼幾個函數,樓上已經有人提過了。重點是在R3層處理這種變動消息的時候一定不能有阻塞,否則會丟失通知消息的。配合IO完成埠來使用是一個辦法。
似乎沒有,祇有 OS X 實現了文件系統的通知,而且只是監視到 folder 一級。
參考這個Quora答案:What does Dropbox use to monitor file changes in the Dropbox folder?
Dropbox的Linux版是開源的:https://linux.dropbox.com/packages/從中應能看出他們是怎麼實現的。在Mac上,參考這個stackoverflow問題osx - How does the DropBox Mac client work?
據說是用了FSevents: FSEvents Reference還可參考:osx - Is there a command like "watch" or "inotifywait" on the Mac?inotify
Linux下,可以使用sersync
推薦閱讀:
※如何學會使用 Linux 操作系統?
※Arch Linux 怎麼安裝?
※有非常豐富的 Linux/Unix 下工作的經驗指的是什麼?
※Nginx 和 Apache 在 Windows 下的性能表現誰更好?
※為什麼這兩個ps命令執行結果不同?
TAG:MicrosoftWindows | API | Linux | C | MFC |