• Viernes 8 de Noviembre de 2024, 20:51

Autor Tema:  C: relanzar procesos hijo - wait() y fork()  (Leído 1438 veces)

zany_666

  • Miembro activo
  • **
  • Mensajes: 29
  • Nacionalidad: es
    • Ver Perfil
C: relanzar procesos hijo - wait() y fork()
« en: Viernes 9 de Abril de 2010, 10:46 »
0
Hola a tod@s! Me estoy haciendo un programilla en C en el que tengo varios procesos creados con fork() y cada uno de estos procesos ejecuta un programa con exec(). Al ejecutar mi programa, todos los que quiero ejecutar con exec () se lanzan a la vez. Por último, en el código de mi programa hago un wait() para esperar a que cada hijo (proceso) termine y muestro el estado con el que han salid. Hasta aquí todo me funciona bien, pero me gustaría que cuando uno de estos programas se cierre o muera se vuelva a lanzar, es decir, siempre van a estar ejecutandose.
He utilizado

Código: C
  1. Seleccionar todo
  2.     if (WIFEXITED(status)){
  3.              execvp (...);
  4.                             exit(EXIT_FAILURE);
  5.           }
  6.  


Pero con esto solo me lanza el primer programa ejecutado con exec() sea cual sea el que cierre, y lo que quiero es que si tengo tres programas A, B, C, se ejecuten simultaneamente y si cierrro el A se vuelva a lanzar el A. No sé si me explicado bien...
¿Cómo puedo saber cuando un hijo termina (sea cual sea el estado en que termino) para volver a lanzar el proceso?

Gracias adelantadas!
Una imágen vale más que mil palabras, pero ocupa mucha más memoria...