Matar dos procesos hijos en C

Iniciado por Katerina Dobreva, 2 Diciembre 2016, 20:16 PM

0 Miembros y 1 Visitante están viendo este tema.

Katerina Dobreva

Hola, tengo que hacer un programa en el que creo dos procesos hijos. Cuando pasen 5 segundos, hay que matar a los dos procesos hijos en orden, el segundo debe esperar a que muera el primero. No consigo que mueran los procesos. Alguien podría echarme una mano. Gracias.



void tiempo(int sig)
{
   kill(hijo1, SIGTERM);
   kill(hijo2, SIGTERM);
}

void funcion()
{
   printf("Se ha matado un proceso");
}

int main(int argc, char **argv)
{
   struct sigaction action;
   sigset_t new_mask;

   act.sa_flags = 0;
   act.sa_handler = &funcion;
   sigaction(SIGTERM, &action, NULL);
   sigemptyset(new_mask);
   sigaddset(&new_mask, SIGTERM);

   hijo1 = fork();
   switch(hijo1)
   {
      case 0:
         sigsuspend(&new_mask);
   }
   hijo2 = fork();
   switch(hijo2)
   {
      case 0:
         sigsuspend(&new_mask);
   }
   signal(SIGALRM, tiempo);
   alarm(5);
}