[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] C e inotify




> 
> 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


Reply to: