nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

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