Question

Je veux surveiller des événements du système de fichiers pour quelques répertoires sur le mac. Les répertoires que je veux suivre pourrait changer lors de l'exécution, donc à l'aide FSEvents voici ce que mon application fait:

  • crée une fonction de rappel globale pour gérer callbacks
  • créer un nouveau FSEventStreamRef par dossier, en l'associant avec le rappel créé ci-dessus et en ajoutant un contexte à la EVENTSTREAM qui me aide à associer le rappel de changement avec ce dossier

Stuff semble fonctionner la plupart du temps, mais je l'ai remarqué quelques bizarreries quand les callbacks sont invoquées et les valeurs 'eventPaths d'être envoyé à la fonction de rappel.

Par exemple, si j'ai créé StreamRefs pour / Foo et / Bar, si j'ajouter un fichier dans / Bar mon rappel est invoquée presque immédiatement, mais les points de eventPaths à un emplacement / Foo, et le contexte I associé à le StreamRef est aussi celle de / Foo.

Ou, dis que je suis suivi / Foo et / Bar puis retirez / Bar (en arrêtant et en fermant la StreamRef pour / Bar correctement). Je crée maintenant une nouvelle FSEventStreamRef pour / frais et associé avec le même rappel. Tout changement que je fais à / frais ne provoquent pas le rappel à invoquer mais les changements à / Foo continuer à augmenter le rappel.

Tout exemple ou la documentation que j'ai vu des discussions en ligne seulement de la surveillance d'un seul dossier. Quelque chose avec Busted comment j'associer les callbacks simples avec plusieurs FSEventStreamRefs? On dirait qu'il ne faut pas être un problème ...

Quelqu'un at-il fait quelque chose de similaire d'une manière qui fonctionne de manière fiable, ou des suggestions pour ce que je pourrais essayer différemment?

Une chose que je l'ai fait essayer de faire ce que je faisais des expériences avec c'est d'utiliser un seul FSEventStreamRef et passer un CFArrayRef avec tous les chemins que je voulais, et quand ma liste de surveillance change proche et recréer une nouvelle FSEventStreamRef - fonctionne ce encore pire que ce qui précède.

Était-ce utile?

La solution

.

fonctionne pour moi ces caractéristiques j'imité:

  1. Un chemin par flux
  2. Un contexte par chemin / flux
  3. Un rappel pour tous les flux

Pouvez-vous montrer le code qui est défaut?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top