Domanda

Ho creato un semplice watcher di filesystem in C ++ utilizzando l'API degli eventi del file system Mac come documentato qui: Developer Apple DOC . La mia domanda è nel titolo. Come posso ottenere il percorso della cosa che è stato cambiato? L'array di eventpaths mi dà solo il percorso della directory principale (o ne stabilita) che sto essenzialmente guardando. Ma non la voce di directory sottostante che è stata modificata.

Posso afferrare informazioni utili usando il callback, I.e.:

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

Sto pensando che forse il nome può essere estratto da uno di questi articoli?

Modifica:

Ad esempio, si potrebbe scoprire che un file è stato creato nel qual caso A

kfseventstreamventflagitemcreated

è sollevato. Ma come dovrei andare a prendere il nome effettivo di quell'oggetto? (Allo stesso modo per altri eventi, come quando un oggetto viene cancellato ecc.).

Modifica 2:

Sto iniziando a pensare che non sarà possibile fare ciò che voglio. Da Panoramica della tecnologia FS :

"Il punto importante da portare via è che la granularità delle notifiche è a livello di directory. Ti dice solo che qualcosa nella directory è cambiato, ma non ti dice cosa è cambiato."

aka. Bugger.

Saluti,

Ben.

È stato utile?

Soluzione

In realtà, questo è possibile, ma solo su 10.7+.Dai un'occhiata alla bandiera KFSeventstreamCreateFlagFilevents per FseventsTreamCreate (Docs qui).

Altri suggerimenti

Sfortunatamente come ho scoperto, non è possibile;Vedi Panoramica dei FS Tech per una spiegazione / motivazione.Un'operare sarebbe quella di scattare un'istantanea della directory e quindi ogni volta che viene scoperta una modifica, scattare una nuova istantanea e differ, con l'originale, per trovare le voci specifiche della directory (e i loro nomi) che sono cambiati.

Modifica: è possibile in>= 10.7 (vedi risposta scelta)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top