如何用c++監控windows和linux文件夾中文件的變化,有沒有什麼api可以讓系統在保存文件的時候通知程序?


linux 提供了inotify機制來監視文件事件的


win下面明顯有

FindFirstChangeNotification和 ReadDirectoryChanges

這兩個api可以用來監控文件變化

相關工具參考 FileMon


linux和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 |