> > Il mio obiettivo è tracciare quattro tipi di eventi: modifica attributi, > modifica, cancellazione del file e spostamento del file usando > rispettivamente i flag IN_ATTRIB, IN_MODIFY, IN_DELETE_SELF e > IN_MOVE_SELF. Inoltre il file è aperto in lettura. > > La modifica del file, modifica attributi e spostamento vengono rilevati > mentre la cancellazione (con rm, unlink) non viene rilevato con evento > IN_DELETE_SELF ma IN_ATTRIB. > > Ho notato anche che la modifica del file con un editor (nel mio caso vi) > non riporta un evento modify ma un move e un attrib (forse perche vi > crea un file in /tmp e poi lo sposta sul'originale?) > > > Ho effettuato alcune prove per verificare questo comportamento. Ho > rimosso il flag IN_ATTRIB dai flag e non inotify non riesce nemmeno a > rilevare l'evento. > > Ho provato anche a cambiare il flag da IN_DELETE_SELF in IN_DELETE (per > le dir) ma nulla. > > Dato che su questo specifico file è aperto un file descriptor, e avendo > letto che il delete_self non viene rilevato con un fd aperto sul file, > ho provato anche a non aprire il file in lettura (per altre operazioni) > senza esito positivo. > > Ho provato anche a cambiare la tipologia di "watch",ovvero monitorare > la > directory invece del singolo file e cambiando IN_MOVE_SELF e > IN_DELETE_SELF con IN_DELETE e IN_MOVE e tutto funziona a dovere. > L'unico problema è che il watch su tutta la directory non > "traccia" solo > il file interessato ma tutti gli altri quindi poi devo andare a > controllare in struct event -> name se il file è quello interessato. > Dato che potrebbero esserci molti file vorrei evitare che ad ogni evento > sulla dir, il programma debba controllare molte volte per quale file è > stato ricevuto l'evento. > > > Al momento per la cancellazione del file ho tralasciato la problematica > dell'IN_DELETE_SELF, e considero solo il FLAG IN_ATTRIB. Quindi se > ricevo l'evento per ATTRIB verifico anche se il file esiste (con access) > e cosi via. > > Ho cercato, girato e sudato ma non ho trovato nulla. Qualcuno sa da cosa > può dipendere il problema della cancellazione? > > Inoltre, vi viene in mente qualche modo esotico di moficare le proprietà > (elencate sopra) di un file?
> Io ho lavorato un pochino con inotify, ma in python. Sostanzialmente non dovrebbe cambiare nulla. Metto sotto monitoraggio le directory, non i files !!!! Il modo più pulito per "catturare" la cancellazione di un file, è monitorare la directory, e usare l'evento IN_DELETE Per quanto riguarda "vi", crea diversi files temporanei e fa spostamenti vari !!!! Walter