特定のディレクトリの下にあるファイルが (直接的または間接的に) 変更されたときにコードに通知されるようにします。「変更」とは、ファイルの内容が変更されたり、名前が変更されたり、削除されたりするたびにコードに通知することを意味します。または新しいファイルが追加された場合。私のアプリケーションでは、何千ものファイルが存在する可能性があります。
私は FSEvents のように見えましたが、その技術概要には次のように書かれています。
注目すべき重要なポイントは、通知の粒度がディレクトリ レベルであるということです。ディレクトリ内の何かが変更されたことだけが通知され、何が変更されたかは通知されません。
また、次のようにも述べています。
また、ファイル システム イベント API は、特定のファイルがいつ変更されたかを検出するようには設計されていません。このような目的には、kqueues メカニズムの方が適切です。
ただし、特定のファイルで kqueue を使用するには、ファイルを開いてファイル記述子を取得する必要があります。何千ものファイル記述子を管理するのは現実的ではありません (また、オープン ファイル記述子の最大許容数を超える可能性があります)。
不思議なことに、Windows ではこのReadDirectoryChangesW()
関数を使用できます。
では、Mac OS X で私が望むことをどのように行うことができるでしょうか? または、別の方法で尋ねられました:ReadDirectoryChangesW()
ユーザー空間で Mac OS X に相当するものを作成するにはどうすればよいでしょうか (非常に効率的に行います)。