2009-05-27 9 views
1

Mac上のいくつかのディレクトリのファイルシステムイベントを監視したい。私は、実行時に変更される場合があります監視するディレクトリは、ので、ここでFSEventsを使用すると、私のアプリが何をするかです:OS X Leopardで奇妙なものがある

  • は、作成したコールバックと関連付け、フォルダごとに新しいFSEventStreamRefを作成
  • コールバックを処理するためのグローバルコールバック関数を作成します上記と私はスタッフほとんどが動作しているようですが、コールバックが呼び出され、「eventPaths」値がされているときに私はいくつかのすごみを気づいたこのフォルダに

を変更コールバックを関連付けるのに役立つeventStreamにコンテキストを追加しますコールバックに送信されます。

たとえば、/ Fooと/ Barのストリームリフェラルを作成した場合、/ Barにファイルを追加すると、コールバックはほとんど直ちに呼び出されますが、eventPathsは/ Fooの場所と、 StreamRefは/ Fooのものでもあります。

または、/ Fooと/ Barを監視していて、/ Barを削除している(/ BarのStreamRefを正しく停止して終了すると)。/Feeの新しいFSEventStreamRefを作成し、同じコールバックに関連付けます。/Feeを変更してもコールバックは呼び出されませんが、/ Fooを変更するとコールバックが引き続き発生します。

私がオンラインで見た例やドキュメントは、1つのフォルダの監視についてのみ述べています。単一のコールバックを複数のFSEventStreamRefに関連付ける方法で何かが壊れていますか?しかし、それは問題ではありませんように聞こえます...

誰かが信頼性の高い方法で何か似たようなやり方をしていますか、私は違ったことを試してみるべきですか?

私がこれを試していたときに試みたことは、単一のFSEventStreamRefを使用して、必要なすべてのパスをCFArrayRefに渡し、ウォッチリストが閉じると新しいFSEventStreamRefを再作成するときです。上記のものより悪いことに働く。

答えて

4

Works for me.は、私はこれらの特性をエミュレート:すべてのための

  1. 一方の経路ストリームあたり
  2. 一つのパス/ストリームあたりのコンテキスト
  3. 一つのコールバックは

ストリームあなたは失敗のコードを表示することができます?

+0

+1あなたのソースを解答するために+1してください。 Bitbucketで); – NicDumZ

+0

うん、良いコール。私はちょうど誰かがここでFSEventsについて不思議に思っています:http://stackoverflow.com/questions/2815502/automatic-screenshot-uploading-on-mac-like-cloud-app/この答えは、いくつかのフォルダを監視します。 –

+0

誰でもこの動作を示すサンプルコードがありますか? – cksubs

関連する問題