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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda sobre procesos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda sobre procesos  (Leído 2,133 veces)
michelmarques

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Duda sobre procesos
« en: 1 Diciembre 2012, 19:00 pm »

Hola buenas, quería consultaros cual sería el árbol de procesos resultante de su ejecución, y el orden en que se generarían los procesos. [Tengo la solución del árbol sacada pero no consigo entender el por qué, da ese resultado] Por tanto me ayudaría más una explicación del código "para dummies" que la resolución del mismo.


Citar
#include <todas_las_cabeceras_necesarias.h>
int main(void){
pid_t pid;
int i;
for(i=0; i<4; i++;){
   if(!fork()){
      if ((i%2)==0)
         fork();
      exit(0);
   }
   wait(NULL);
}
return 0;
}


Muchas gracias!


« Última modificación: 1 Diciembre 2012, 19:02 pm por michelmarques » En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Duda sobre procesos
« Respuesta #1 en: 1 Diciembre 2012, 20:04 pm »

Sabemos que fork() duplica el código del proceso padre y el proceso hijo resultante continúa su ejecución donde quedó el padre.

Ese código que nos muestras va a ir creando un proceso a la vez y el proceso padre va a esperar que este termine (función wait). En el caso de i = 0 e i = 2 se va a cumplir la condición de ((i%2)==0) y el proceso hijo 0 y 2 crearan un proceso hijo respectivamente, los cuales harán exit inmediatamente. (Ambos procesos quedarán zombies en la tabla de procesos, debido a que su padre no hizo wait).

En general, se van creando procesos secuencialmente y en los casos particulares de i=0 e i=2 los procesos hijos crearan otro proceso hijo (nieto del principal, por así decirlo).


« Última modificación: 1 Diciembre 2012, 20:06 pm por naderST » En línea

michelmarques

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Re: Duda sobre procesos
« Respuesta #2 en: 1 Diciembre 2012, 20:29 pm »

Gracias por tu respuesta, pero despues de tu explicación aún me queda menos claro el resultado, que es el que adjunto. A ver si lo puedo llegar a entender.

Quizá con una traza lo consiga comprender, ... No sé :(

Un saludo

« Última modificación: 1 Diciembre 2012, 20:33 pm por michelmarques » En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Duda sobre procesos
« Respuesta #3 en: 1 Diciembre 2012, 21:16 pm »

Qué no entiendes? Por qué no haces un ejemplo más sencillo y tratas de entenderlo? También debes tomar en cuenta que fork() una vez duplicado el código por el lado del proceso padre puede devolver -1 si falla o el PID del nuevo proceso hijo, ahora bien por el lado del hijo devuelve 0
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda sobre procesos
Programación Visual Basic
Anteros 1 1,244 Último mensaje 28 Abril 2007, 01:36 am
por vivachapas
Duda sobre algunos procesos
Seguridad
Fierce 5 3,093 Último mensaje 19 Julio 2011, 21:20 pm
por .:UND3R:.
Hola una duda sobre los procesos y los exe
Programación Visual Basic
ricardovinzo 8 2,469 Último mensaje 17 Octubre 2008, 16:28 pm
por ~~
Duda teorica sobre procesos simultaneos...!!!
Java
rigoxls 2 4,661 Último mensaje 18 Julio 2009, 02:36 am
por rigoxls
Python, duda sobre procesos, persistencia y ese tipo de cosas...
Scripting
#Aitor 1 2,087 Último mensaje 20 Diciembre 2017, 14:37 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines