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: