Linux OSでは、ファイルシステムへの変更をアプリケーションに通知するionotifyサブシステムがあります。
しかし、私は主にWindowsユーザーなので、ファイルシステムの変更を監視する同様の方法があるかどうか疑問に思っていましたか?
Linux OSでは、ファイルシステムへの変更をアプリケーションに通知するionotifyサブシステムがあります。
しかし、私は主にWindowsユーザーなので、ファイルシステムの変更を監視する同様の方法があるかどうか疑問に思っていましたか?
回答:
FindFirstChangeNotification APIまたは対応する.NETを参照してください FileSystemWatcherを
.netを使用している場合は、を使用しますFileSystemWatcher
。詳細はこちら:http : //msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx
あなたが使用している場合はC、使用することをFindFirstChangeNotification
、FindNextChangeNotification
、ReadDirectoryChangesW
。詳細はこちら:http : //msdn.microsoft.com/en-us/library/aa365261(VS.85).aspx
でOSX、関連するAPIがあるfsevents
API。
それらはすべて微妙に異なり、エッジのケースでは信頼性に問題があります。一般に、すべての変更を100%完全に表示するために、これらのAPIに依存することはできません。ファイルシステム監視を使用するほとんどの人は、定期的なスキャンと組み合わせて、Push APIからの失われた情報や不完全な情報を補正します。
これを見てください:inotify-win、Windows用のinotifywaitツールの移植版
そしてこれ:inotify-tools
少し遅れますが...
WindowsにはOSXイベントと同様の機能があり、アプリを実行せずにイベントを監視できます。Windows USN Journalは、すべてのファイル変更を追跡します。Jeffrey Richter(Advanced Windowsの作者)が、MSDN Journalの実用的なサンプルを含む素晴らしい記事を書きました。更新:記事 MSJがMSでオンラインでなくなったため、archive.orgからのれました。
ボリューム全体を監視する必要のあるバックアップツールやインデックスなどのアプリケーションを構築している場合は、USN変更ジャーナルの方がおそらく優れています。
FileSystemWatcher
| FindFirstChangeNotification
PhillipBrandonHolmesたと言えば?
FileSystemWatcher()は、主に監視バッファのエラー処理が多かれ少なかれ不完全であるため、信頼できません。パスと詳細なエラー処理情報がないため、Microsoftは作業ディレクトリを回復したり、手動でポーリングしたりする方法を提供していません。
このバグ^はwin32に由来するため、JNotify for Windowsも信頼できません。JNotifyはwin32を使用します。したがって、FileSystemWatcher()と同じです。
私は少し検索しましたが、Windowsでも同様のものが表示されたことを思い出しました。FileSystemWatcher for .NET があり ます。主にNTまたはXP以降で使用されます。