Quiero enviar una señal del hijo 1 al hijo 2 y que cuando la reciba salte a la manejadora, después que el hijo 2 envíe una señal al hijo 1 y salte a la manejadora, pero cuando pasen 5 segundos se maten los procesos.
Consigo que se maten los procesos cuando pasan los 5 segundos, pero no que se envíen las señales SIGUSR1 antes. ¿Alguien podría ayudarme?
Mod: Los códigos deben ir en etiquetas GeSHi
Consigo que se maten los procesos cuando pasan los 5 segundos, pero no que se envíen las señales SIGUSR1 antes. ¿Alguien podría ayudarme?
Código (cpp) [Seleccionar]
int main(int argc, char **argv) {
struct sigaction action;
sigset_t new_mask, oldmask;
int exitcode;
action.sa_flags = 0;
action.sa_handler = funcion;
sigaction(SIGTERM, &action, NULL);
sigemptyset(&new_mask);
sigaddset(&new_mask, SIGTERM);
sigaddset(&new_mask, SIGUSR1);
hijo1 = fork();
switch(hijo1) {
case 0:
kill(hijo2, SIGUSR1);
sigprocmask(SIG_BLOCK, &new_mask, &oldmask);
sigsuspend(&new_mask);
}
hijo2 = fork();
switch(hijo2) {
case 0:
kill(hijo1, SIGUSR1);
sigprocmask(SIG_BLOCK, &new_mask, &oldmask);
sigsuspend(&new_mask);
}
signal(SIGALRM, tiempo);
alarm(5);
wait(&exitcode);
wait(&exitcode);
}
Mod: Los códigos deben ir en etiquetas GeSHi