Este es un escenario bastante básico, pero no encuentro demasiados recursos útiles. Tengo un programa C++ ejecutándose en Linux que procesa archivos. Lee líneas, realiza varias transformaciones, escribe datos en una base de datos. Hay ciertas variables (almacenadas en la base de datos) que afectan el procesamiento que estoy leyendo en cada iteración porque quiero que el procesamiento sea lo más actualizado posible, pero un ligero retraso está bien. Pero esas variables cambian muy raramente, y las lecturas son costosas a lo largo del tiempo (10 millones más filas por día). Podría espaciar las lecturas a cada n iteraciones o simplemente reiniciar el programa cuando una variable cambia, pero esas parecen hackish.Manejo básico de señales en C++
Lo que me gustaría hacer es hacer que el programa active una nueva lectura de las variables cuando recibe un SIGHUP. Todo lo que estoy leyendo sobre el manejo de señales está hablando de la biblioteca de señales C, que no estoy seguro de cómo vincular las clases de mi programa. Las bibliotecas de señales de Boost parecen tener más que ver con la comunicación entre objetos en lugar de manejar las señales del sistema operativo.
¿Alguien puede ayudar? Parece que esto debería ser increíblemente simple, pero estoy bastante oxidado con C++.
Oh duh. Estaba pensando demasiado y olvidé que las variables de señal son lo que quiero en lugar de la invocación directa. * headdesk * – KernelM
Si quiere cumplir con los estándares, asegúrese de calificar su manejador de señal como 'extern' C "' –
@R Samuel: Es un gran punto.Ni siquiera pensé en 'extern" C "' ya que estaba escribiendo código C, ¡pero el OP lo necesitará! –