Hola todo el mundo, hace siglos que no me pasaba por aquí. En todo caso a sido en el primer foro que he pensado :D.
Bueno os cuento, mi duda es: si yo creo un hijo en linux con pid_t fork(); y este es creado dentro de un bucle, el también ejecutara el bucle o saldra de él??. La duda viene a raiz de que yo quiero que salga directamente o se me fastidia el invento :D.
Os copio el código que sera más comprensible supongo.
Citar
//DATOS ADICIONALES
N_MAX=15
numero es cada cuanto se genera un hijo
tiempo_max es lo que duerme el hijo
while(i<10)
{
srand(time(0));
//Generamos un numero no mayor que N_MAX
//Le sumamos 1 para que empiece en 1.
numero=1+rand()%(N_MAX);
//Generamos el tiempo de espera de cada hijo.
//Crea números en un intervalo de 5 a 30.
tiempo_max=5+rand()%21;
//Tiempo de espera para crear el siguiente hijo.
sleep(numero);
//CREAR HIJO
pid_t fork(); <-Creo el hijo, va a salir o va a comprobar el while?????
}
pid_h=getpid();
if(pid_h==0) //Solo si es hijo.
{
sleep(tiempo_max);
printf("\n\t Simulador: Lanzando programa- Tiempo ejecución %d ",tiempo_max);
exit(0);
}
//El padre espera a que todos los hijos mueran.
wait();
Cualquier cosa que se os ocurra sera de gran ayuda.
Un saludo
El fork hace lo siguiente:
- Cambia modo de operación (de usuario a Kernel)
- Crea un mapa de memoria para un nuevo proceso
- Copia exactamente igual todas las variables, heap y stack del proceso original (incluso el contador de programa).
- Devuelve 0 al proceso hijo y el identificador de proceso del hijo al padre.
Luego tu programa después de llamar al fork va a seguir dentro del while y va a evaluar la condicion.
Salu2
Mil gracias darkraider, entonces tendre que hacer un par de cambios.
Un saludo