3

OSX FSEventStream を使用して、特定のディレクトリのファイル システムの変更を監視しています。ここのドキュメントを見ていたら、kFSEventStreamCreateFlagIgnoreSelf という興味深いフラグが記述されているのを見つけました。

このフラグを使用するドキュメントによると、FSEvents フレームワークは「現在のプロセスによってトリガーされたイベント」について通知しません。

これはいいですね。それはまさに私が望んでいることですが、実際には、現在のプロセスによってトリガーされたイベントがまだいくつかあることがわかりました。

私の限られたテストでは、監視プロセスが新しいファイルを作成するか、既存のファイルの名前を変更すると、イベントが引き続きトリガーされます。少なくとも既存のファイルのいくつかの変更はイベントをトリガーしません。

限られたドキュメント (およびフラグの名前) に基づいて、現在のプロセスによってイベントがトリガーされることは期待できません。

だから私の質問は 2 つあります: -- これは予想される動作ですか? このままの振る舞いを当てにしてしまうと、それは意図的ではなく、将来的には自分の下から変化する可能性があるのではないかと心配しています。

2番目: -- もしそうなら、このフラグを使用したときにどのイベントがまだ配信されると期待できるか知っている人はいますか?

4

2 に答える 2

3

このフラグを使用すると、プロセスで行ったファイルの変更がイベントとして送信されないことに気付きました。その後外部イベントを取得しない場合、最後に記録された eventId (次にストリームを作成するときに使用するため) は、取得できなかったイベントよりも前になるため、次にプロセスを開始するときにそれらのイベントが表示されます。 、イベント履歴ダンプ内。

これはあまり答えになっていないことを申し訳ありませんが、あなたが見ていることを説明するのに役立つかもしれないと私が観察したものです.

于 2012-12-06T01:42:10.223 に答える