Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Katerina Dobreva en 4 Diciembre 2016, 22:45 pm



Título: Enviar señales
Publicado por: Katerina Dobreva en 4 Diciembre 2016, 22:45 pm
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?

Código
  1. int main(int argc, char **argv) {
  2. struct sigaction action;
  3. sigset_t new_mask, oldmask;
  4. int exitcode;
  5.  
  6. action.sa_flags = 0;
  7. action.sa_handler = funcion;
  8.  
  9. sigaction(SIGTERM, &action, NULL);
  10. sigemptyset(&new_mask);
  11. sigaddset(&new_mask, SIGTERM);
  12.        sigaddset(&new_mask, SIGUSR1);
  13.  
  14. hijo1 = fork();
  15. switch(hijo1) {
  16. case 0:
  17.                kill(hijo2, SIGUSR1);
  18. sigprocmask(SIG_BLOCK, &new_mask, &oldmask);
  19. sigsuspend(&new_mask);
  20. }
  21.  
  22. hijo2 = fork();
  23. switch(hijo2) {
  24. case 0:
  25.                kill(hijo1, SIGUSR1);
  26. sigprocmask(SIG_BLOCK, &new_mask, &oldmask);
  27. sigsuspend(&new_mask);
  28. }
  29.  
  30. signal(SIGALRM, tiempo);
  31. alarm(5);
  32. wait(&exitcode);
  33. wait(&exitcode);
  34. }


Mod: Los códigos deben ir en etiquetas GeSHi