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

Re: [OT] C e inotify



Il 22/07/2016 22:07, Mattia ha scritto:
Il 22 luglio 2016 17:32, Alessandro Baggi <alessandro.baggi@gmail.com>
ha scritto:
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.
[...]
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.

Non riesco a riprodurre il tuo problema, quello che vedo io è questo:
$ touch file
$ ./a.out file
$ rm file
file 00000004: IN_ATTRIB
file 00000400: IN_DELETE_SELF
file 00008000: IN_IGNORED
Cioè, vedo anche io un IN_ATTRIB, ma seguito come mi aspetto da IN_DELETE_SELF
e IN_IGNORED. Non è che in uscita dalla read() leggi solo il primo e
scarti gli altri?

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?)
Quasi. Al momento di salvare il file, vim lo rinomina in 'nomefile~', crea un
nuovo file 'nomefile' e se tutto va a buon fine elimina 'nomefile~'.
Per questo motivo, non puoi aspettarti un IN_MODIFY perchè una volta che vim
ha fatto rename(), il tuo processo continuerà ad osservare 'nomefile~' che non
verrà toccato se non per fare unlink() alla fine.
La sequenza che vedo salvando un file con vim è questa:
$ ./a.out file
file 00000800: IN_MOVE_SELF
file 00000004: IN_ATTRIB
file 00000400: IN_DELETE_SELF
file 00008000: IN_IGNORED
cioè il risultato di rename() e unlink()

Ti allego il file sorgente con cui ho fatto le prove: vedi sulla tua macchina
come si comporta.

Ciao
Mattia


Salve ragazzi,
scusate il ritardo per la risposta. Ha ragione Mattia, leggo solo il primo evento "buttando" via i successivi.

Grazie a tutti per l'aiuto.

PS. Sono iscritto a tante ML, ma in nessuna si riceve l'aiuto che si riceve qui. Grandi ragazzi.


Reply to: