inotify e lettura di strutture dati da file descriptor
Von: vito.detullio@gmail.com [Profil]
Datum: 26.01.2008 09:48
Message-ID: <fdaa491f-af22-4284-ac57-b696e98a6dc1@d70g2000hsb.googlegroups.com>
Newsgroup: it.comp.os.linux.development
Datum: 26.01.2008 09:48
Message-ID: <fdaa491f-af22-4284-ac57-b696e98a6dc1@d70g2000hsb.googlegroups.com>
Newsgroup: it.comp.os.linux.development
Salve a tutti,
sono un vecchio niubbo del c (nel senso che lo studiai, tanto tempo
fa, ma oramai ho dimenticato quasi tutto) e ho un problema.
Sto facendo un programmino che utilizza le API di inotify
(inotify_init(), inotify_add_watch(), inotify_rm_watch()) per
controllare una serie di directory ricorsivamente.
Solo che ho un problema con la read!
cioè: inotify_init ritorna un file descriptor, che la documentazione
mi dice essere lo stream associato alla coda degli eventi che accadono
ai miei file monitorati. Solo che la struttura di un singolo evento è
di questo tipo:
struct inotify_event {
int wd; /* Watch descriptor */
uint32_t mask; /* Mask of events */
uint32_t cookie; /* Unique cookie associating related
events (for rename(2)) */
uint32_t len; /* Size of 'name' field */
char name[]; /* Optional null-terminated name */
};
come si può vedere l'ultimo campo è a dimensione variabile (tant'è
che
"len" è lì proprio a questo scopo).
Io, con la read, vorrei poter leggere "direttamente" dal fd, e
scrivere "direttamente" in una variabile di tipo struct inotify_event,
solo che la dimensione della struttura la devo calcolare al volo (in
man inotify stessso leggo che la dimensione di un evento è size(struct
inotify_event) + evento->len), e non so come fare, visto che è
contenuta nella struttura stessa, e quindi non so che parametro
passare a malloc() per poter allocare lo spazio "giusto" per il dato
che mi viene dal file!
Sapete aiutarmi?
[ Auf dieses Posting antworten ]Antworten
- Gian Uberto Lauri (26.01.2008 11:43)
- Max M. (26.01.2008 13:34)
- Max M. (26.01.2008 13:20)
