A.2. Processi di attivazione
Numerose applicazioni eseguono la scansione dei file di configurazione per la presenza di modifiche. In numerosi casi la scansione viene eseguita ad intervalli fissi, per esempio, ad ogni minuto. Ciò può presentare un problema poichè verrà forzata l'attivazione del disco dopo un suo arresto (spindown). La migliore soluzione è quella di trovare un intervallo idoneo, un buon meccanismo di controllo o di verificare la presenza di modifiche con inotify e reagire agli eventi. Inotify è in grado di verificare un numero elevato di modifiche presenti sul file o sulla directory.
Per esempio:
int fd; fd = inotify_init(); int wd; /* checking modification of a file - writing into */ wd = inotify_add_watch(fd, "./myConfig", IN_MODIFY); if (wd < 0) { inotify_cant_be_used(); switching_back_to_previous_checking(); } ... fd_set rdfs; struct timeval tv; int retval; FD_ZERO(&rdfs); FD_SET(0, &rdfs); tv.tv_sec = 5; value = select(1, &rdfs, NULL, NULL, &tv); if (value == -1) perror(select); else { do_some_stuff(); } ...
Il vantaggio offerto da questo approccio è rappresentato da una vasta gamma di controlli possibili.
La limitazione principale è che solo un numero limitato di watch è disponibile su di un sistema. È possibile ottenere tale numero tramite
/proc/sys/fs/inotify/max_user_watches
ed anche se sarà possibile modificarlo, tale operazione non è consigliata. Altresì, nel caso in cui inotify fallisce, il codice deve cambiare il metodo di controllo, ciò significa che saranno presenti numerosi eventi #if #define
nel codice sorgente.
Per maggiori informazioni su inotify consultare la pagina man di inotify.