• Sábado 14 de Diciembre de 2024, 10:33

Autor Tema:  desarrollo de procesos  (Leído 1781 veces)

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
desarrollo de procesos
« en: Lunes 16 de Febrero de 2009, 23:41 »
0
Hola,no se como empezar a plantear el siguiente árbol de procesos,no se que regla a seguir.el problema dice lo siguiente:

Realiza un programa llamado arbol.c o arbol.cc que reciba un argumento X,por ejemplo arbol 4,se cree el siguiente árbol


  p11        8541
                   |
                   |
  p21  8542  8543   8548
                   |
                   |
  p31         8544
                  |
                  |
 p41  8545  8546   8547


Ejemplo de ejecución:
$ arbol 4
Soy el proceso padre (11): mi pid es 8541
Soy el proceso 21: mi pid es 8542. Mis padres son: 8541
Soy el proceso 22: mi pid es 8543. Mis padres son: 8541
Soy el proceso 23: mi pid es 8548. Mis padres son: 8541
Soy el proceso 31: mi pid es 8544. Mis padres son: 8543, 8541
Soy el proceso 41: mi pid es 8545. Mis padres son: 8544, 8543, 8541
Soy el proceso 42: mi pid es 8546. Mis padres son: 8544, 8543, 8541
Soy el proceso 43: mi pid es 8547. Mis padres son: 8544, 8543, 8541
/*Tras un intervalo de n segundos aparecerá */
Soy 41 (8545) y muero
Soy 42 (8546) y muero
Soy 43 (8547) y muero
Soy 31 (8544) y muero
Soy 21 (8542) y muero
Soy 22 (8543) y muero
Soy 23 (8548) y muero
Soy 11 (8541) y muero



No puedo señalarlo,pero 8542,8543,8548 son hijos de 8541  y 8545,8546 y 8547 son hijos de 8544   ,los número no tienen porque ser estos,solo lo pongo a modo de orientacion,pero es que no se el proceso a seguir....

Me podeis ayudar a entender,como empezar el desarrollo?

Espero respuesta.
Gracias.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: desarrollo de procesos
« Respuesta #1 en: Martes 17 de Febrero de 2009, 09:25 »
0
Pues un proceso padre crea los primeros hijos, que a su vez crean hijos, etc... Mírate la llamada al sistema fork(). Si puedes poner parte del código que tengas hecho y dudas concretas podríamos mirarlo más en detalle.

Salud

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: desarrollo de procesos
« Respuesta #2 en: Martes 17 de Febrero de 2009, 10:11 »
0
Hola,gracias por su contestacion,pero es que no se porque los primeros hijos ,uno de ellos crea un hijo,,, y de ese hijo salen 3 hijos....el problema es que no se que diferencia hay ,metiendole el argumento 4(como es el caso que he presentado) y por ejemplo metiendo el argumento 6..(por ejemplo),.entendió el problema?,si hay algo que no entienda,comèntemelo...

Gracias.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: desarrollo de procesos
« Respuesta #3 en: Martes 17 de Febrero de 2009, 11:33 »
0
Cita de: "pacorubio77"
no se que diferencia hay ,metiendole el argumento 4(como es el caso que he presentado) y por ejemplo metiendo el argumento 6
Pues que en vez de 4 nodos

Cita de: "pacorubio77"
p11 8541
|
|
p21 8542 8543 8548
|
|
p31 8544
|
|
p41 8545 8546 8547
tendrás 6. Por ejemplo:

Código: Text
  1. p11 8541
  2. |
  3. |
  4. p21 8542 8543 8548
  5. |
  6. |
  7. p31 8544
  8. |
  9. |
  10. p41 8545 8546 8547
  11. |
  12. |
  13. p51 8549
  14. |
  15. |
  16. p61 8550 8551 8552
  17.  

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: desarrollo de procesos
« Respuesta #4 en: Jueves 19 de Febrero de 2009, 19:44 »
0
Hola,sobre el caso del otro dia,,tenias razon que el argumento es la profundidad,pero si la profundidad es impar,solo creará uno..es decir...

p11           4055

p21     4056    4057    4068

p31                4058

El esquema quedaría asi,,es decir que el proceso 4057 sólo se crea un hijo.
Teniendo en cuenta el esquema del otro día,mi pregunta es ,como puedo identificarme que cree un hijo  desde el proceso que está en el medio,me refiero al proceso del medio al proceso 8543, otro proceso que está en el medio es el proceso 8546,es decir....como decir que cree hijos a partir de un proceso determinado..???
   1. p11 8541
   2. |
   3. |
   4. p21 8542 8543 8548
   5. |
   6. |
   7. p31 8544
   8. |
   9. |
  10. p41 8545 8546 8547
  11. |
  12. |
  13. p51 8549
  14. |
  15. |
  16. p61 8550 8551 8552


yo enseño el código que tengo echo...que solo creo un padre y tres hijos...y finalizo los procesos...
para que vean que estoy trabajando en ello

//en este codigo..poniendo ./pro 3, creo tres hijos a su padre....
Código: C++
  1. int main(int argc,char *argv[]){
  2.  
  3.     int pid;
  4.     //pid = fork();
  5.     int i=1;
  6.     int profundidad,estado;
  7.     //cout<<pid<<endl;
  8.        
  9.     //printf("el argumento es "<<argv[1]<<endl;
  10.     profundidad=atoi(argv[1]);
  11.     //profundidad=argv[1]+ 0;
  12.     //printf("la profundidad es %d ",profundidad);
  13.     if(profundidad > 1){
  14.  
  15.         for(i=1;i<=profundidad;i++){
  16.             //cout<<"i "<<i<<endl;
  17.             pid = fork();
  18.             if(pid==0){//el padre ha creado un hijo
  19.             printf("soy el hijo %d mi pid es %d y el de mi padre es %d ",i,getpid(),getppid());
  20.             //cout<<endl;
  21.        
  22.         //printf("soy el hijo %d .Mi pid es %d y mi ppid es %d ",i,getpid(),getppid());
  23.             sleep(20);
  24.             exit(0);
  25.             }
  26.         }
  27.  
  28.         for(i=1;i<=profundidad;i++){
  29.             wait(&estado);
  30.             printf("soy el padre con pid %d y mi hijo %d ha terminadon",getpid(),i);
  31.         }
  32.     }
  33.     else{//aqui la profundidad es 1,solo creará el padre,se llamará a partir del 2
  34.  
  35.     }
  36.  
  37. return(0);
  38. }
  39.  
  40.  


Espero ayuda..Gracias.

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: desarrollo de procesos
« Respuesta #5 en: Miércoles 25 de Febrero de 2009, 22:41 »
0
Hola quería saber si hay alguien que siguie mi tema para poner código....los procesos ya los creos,pero no se como sacar los printf...si me decís que se sigue mi tema.....pongo codigo realizado..

Espero respuesta.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: desarrollo de procesos
« Respuesta #6 en: Jueves 26 de Febrero de 2009, 03:24 »
0
Controla la variable i en el bucle para crear procesos. Si es impar 1, si no 3.

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: desarrollo de procesos
« Respuesta #7 en: Jueves 26 de Febrero de 2009, 11:04 »
0
Hola,Gracias por contestar, los procesos creo que los voy creando ya bien...pero no se como guardar los pids de los padres...porque tengo que sacar esto por pantalla:

Soy el proceso 21: mi pid es 8542. Mis padres son: 8541
Soy el proceso 22: mi pid es 8543. Mis padres son: 8541
Soy el proceso 23: mi pid es 8548. Mis padres son: 8541
Soy el proceso 31: mi pid es 8544. Mis padres son: 8543, 8541
Soy el proceso 41: mi pid es 8545. Mis padres son: 8544, 8543, 8541
Soy el proceso 42: mi pid es 8546. Mis padres son: 8544, 8543, 8541
Soy el proceso 43: mi pid es 8547. Mis padres son: 8544, 8543, 8541

Es decir tengo que ir guardando los pids,,y despues no se me mueren todos los procesos.....

quieres que te envie código??

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: desarrollo de procesos
« Respuesta #8 en: Jueves 26 de Febrero de 2009, 15:49 »
0
Para obtener el PID del padre puedes usar getppid() o puedes ir guardando los PIDs, aunque esto puede resultar un poco lioso.