Question

J'ai créé un simple observateur de systèmes de fichiers en C ++ à l'aide de l'API d'événements du système de fichiers Mac comme documenté ici: Apple développeur doc . Ma question est dans le titre. Comment puis-je obtenir le chemin de la chose qui a été changé? Le tableau EventPaths ne me donne que le chemin du répertoire parent (ou défini) que je regarde essentiellement. Mais pas l'entrée de répertoire sous-jacente modifiée.

Je peux saisir des informations utiles à l'aide du rappel, c'est-à-dire.:

   static void mycallback(
            ConstFSEventStreamRef streamRef,
            void *clientCallBackInfo,
            size_t numEvents,
            void *eventPaths,
            const FSEventStreamEventFlags eventFlags[],
            const FSEventStreamEventId eventIds[])

Je pense que peut-être que le nom peut être extrait de l'un de ces articles?

EDIT:

Par exemple, on pourrait constater qu'un fichier est créé auquel cas A

kfseventstreameventflagitemcreated

est soulevé. Mais comment devrais-je aller à propos du nom réel de cet article? (De même pour d'autres événements, comme lorsqu'un élément est supprimé, etc.).

EDIT 2:

Je commence à penser que cela ne sera pas possible de faire ce que je veux. De Aperçu de la technologie FS :

"Le point important à emporter est que la granularité des notifications est à un niveau de répertoire. Il vous indique que quelque chose dans le répertoire a changé, mais ne vous dit pas ce qui a changé."

aka. Bugger.

acclamations,

ben.

Était-ce utile?

La solution

En fait, c'est possible, mais seulement sur 10.7+.Découvrez le drapeau KfseventstreamcreateflagFileEevents pour Fseventstreamcreate (docs ici).

Autres conseils

Malheureusement, comme je l'ai découvert, ce n'est pas possible;Voir Aperçu de la technologie FS pour une explication / motivation.Un travail autour serait de prendre un instantané du répertoire, puis de la découverte d'un changement, prenez un nouvel instantané et diffère avec l'original, pour trouver les entrées de répertoire spécifiques (et leurs noms) qui ont changé.

Edit: il est possible dans>= 10,7 (voir réponse choisie)

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