A.2. Despertadores


Muchas aplicaciones pueden examinar archivos de configuración para cambios. En algunos casos, el examen se realiza en un intervalo fijo, por ejemplo, cada minuto. Esto puede ser un problema, puesto que fuerza al disco a despertar de los spindowns. La mejor solución es hallar un buen intervalo, un buen mecanismo de verificación o revisar los cambios con inotify y reaccionar a eventos. Inotify puede verificar la variedad de cambios en un archivo o un directorio.
Por ejemplo:
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();
}
...
La ventaja de este enfoque es la variedad de verificaciones que se pueden realizar.
La principal limitante es que solo un número limitado de relojes está disponible en el sistema. El número puede obtenerse en /proc/sys/fs/inotify/max_user_watches y aunque se puede cambiar, no es recomendable. Además, si inotify falla, el código tiene que resguardarse a un método de verificación diferente, lo cual suele significar muchas apariciones de #if #define en el código fuente.
Para obtener mayor información sobre inotify, consulte la página man inotify.
Red Hat logoGithubRedditYoutubeTwitter

Aprender

Pruebe, compre y venda

Comunidades

Acerca de la documentación de Red Hat

Ayudamos a los usuarios de Red Hat a innovar y alcanzar sus objetivos con nuestros productos y servicios con contenido en el que pueden confiar.

Hacer que el código abierto sea más inclusivo

Red Hat se compromete a reemplazar el lenguaje problemático en nuestro código, documentación y propiedades web. Para más detalles, consulte el Blog de Red Hat.

Acerca de Red Hat

Ofrecemos soluciones reforzadas que facilitan a las empresas trabajar en plataformas y entornos, desde el centro de datos central hasta el perímetro de la red.

© 2024 Red Hat, Inc.