elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pregunta sobre pid_t fork(); y el hijo creado.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pregunta sobre pid_t fork(); y el hijo creado.  (Leído 6,736 veces)
Tha_Traker

Desconectado Desconectado

Mensajes: 28



Ver Perfil
Pregunta sobre pid_t fork(); y el hijo creado.
« 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


En línea

darkraider

Desconectado Desconectado

Mensajes: 231



Ver Perfil
Re: Pregunta sobre pid_t fork(); y el hijo creado.
« Respuesta #1 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


En línea

Curioso de mi...
Tha_Traker

Desconectado Desconectado

Mensajes: 28



Ver Perfil
Re: Pregunta sobre pid_t fork(); y el hijo creado.
« Respuesta #2 en: 29 Abril 2010, 17:46 pm »

Mil gracias darkraider, entonces tendre que hacer un par de cambios.

Un saludo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda sobre bomba fork
Análisis y Diseño de Malware
crazykenny 3 3,100 Último mensaje 19 Febrero 2021, 10:15 am
por crazykenny
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines