Título: Pregunta sobre pid_t fork(); y el hijo creado. Publicado por: Tha_Traker en 29 Abril 2010, 16:12 pm 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 Título: Re: Pregunta sobre pid_t fork(); y el hijo creado. Publicado por: darkraider en 29 Abril 2010, 17:43 pm 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 Título: Re: Pregunta sobre pid_t fork(); y el hijo creado. Publicado por: Tha_Traker en 29 Abril 2010, 17:46 pm Mil gracias darkraider, entonces tendre que hacer un par de cambios.
Un saludo |