FSEventsのドキュメントを参照してください。ポイント 3. 問題と考えられる解決策について説明します。
FSEventStreamStart() -> ストリームの作成時にクライアントから提供されたコールバックを使用して、クライアントの実行ループからイベントの受信と処理を開始します。sinceWhen パラメーターに値が指定されている場合、最初に「履歴」イベントがコールバックを介して送信され、次に HistoryDone イベントが送信され、次に「現代」イベントが継続的に送信されます (sinceWhen に kFSEventStreamEventIdSinceNow を指定したかのように)。
作成時に目的のディレクトリを指定すると、そのパスの下またはそのパスで発生した履歴イベントのみが取得されます。
FSEventStreamRef FSEventStreamCreate(
CFAllocatorRef allocator,
FSEventStreamCallback callback,
FSEventStreamContext *context,
CFArrayRef pathsToWatch,
FSEventStreamEventId sinceWhen,
CFTimeInterval latency,
FSEventStreamCreateFlags flags);
を指定する必要がありますFSEventStreamCallback
。このコールバックは、送信されたパスの配列とそのパスのイベント フラグを取得します。その後、イベントをふるいにかけることができるはずです。を参照して、FSEventStreamEventFlags
必要なものを選択してください。
File System Events Programming ガイドも参照してください。あなたの正確な問題を扱うセクションがあります。そこで提案されているのは、イベント システムを階層キャッシュと組み合わせることです。