Hola, tengo una duda, tengo 2 programas, uno envia una señal SIGUSR1 al otro con kill(), este al recibirla debe ejecutar una funcion.
El problema es que solo me funciona cuando utilizo pause() para que el programa se quede pausado esperando la señal, si quito el pause(), es como si nunca llegara la señal, porque la funcion nunca se ejecuta, mi duda es si hay algun problema con el codigo o en realidad me falta agregar algo mas.
while(1) {
kill (pid, SIGUSR1);
sleep(30);
}
--------------------------------------------------------
signal (SIGUSR1, realizarFuncion);
y la funcion es:
void realizarFuncion(int numeroSignal) {
...
}
/* Quisiera que funcione sin el pause, porque no puedo detener el proceso */
/* while (1) {
pause();
} */
----------------------------------------------------------
Tambien probado de esta forma:
struct sigaction gestionSignal;
sigset_t block_mask;
sigdelset (&block_mask, SIGUSR1);
gestionSignal.sa_handler = realizarFuncion;
gestionSignal.sa_mask = block_mask;
gestionSignal.sa_flags = SA_NODEFER;
sigaction (SIGUSR1, &gestionSignal, NULL);
---------------------------------------------------
Vuelvo a aclarar que con el pause() funciona perfectamente, bueno espero que me puedan ayudar, gracias!