Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: chonico en Junio 25, 2012, 08:39:12 AM

Título: [SOLUCIONADO] Ayuda con creacion de procesos con fork() en C
Publicado por: chonico en Junio 25, 2012, 08:39:12 AM
Hola a todos

Estoy repasando ejercicios de procesos para prepararme un examen, y me encontrado con este
ejercicio que nunca llegue a poder resolverlo. Sé mas o menos lo fundamental en la creación de
procesos con fork() en C, pero para este ejercicio no se ni como empezar. Haber si hay alguien
que me pueda ayudar o que me oriente un poco para comenzarlo.

Hay os dejo una imagen del árbol de procesos del ejercicio.

(http://k37.kn3.net/9C9621145.jpg)

Gracias de antemano, a quien me ayude y a los que no, también por molestaros en leer el post.
Título: Re:Ayuda con creacion de procesos con fork() en C
Publicado por: Cronos en Junio 25, 2012, 08:51:34 AM
Disculpame, pero no puedo ver la imagen.. Revisa que la hallas colocado bien
Saludos,, Cronos.-
Título: Re:Ayuda con creacion de procesos con fork() en C
Publicado por: chonico en Junio 25, 2012, 08:56:56 AM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Disculpame, pero no puedo ver la imagen.. Revisa que la hallas colocado bien
Saludos,, Cronos.-

Perdón no se que le pasara, pero yo si la veo, pero aqui os dejo el enlace donde he subido la imagen
http://k37.kn3.net/9C9621145.jpg (http://k37.kn3.net/9C9621145.jpg)
Título: Re:Ayuda con creacion de procesos con fork() en C
Publicado por: Pr0ph3t en Junio 25, 2012, 08:58:57 AM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta



Perdón no se que le pasara, pero yo si la veo, pero aqui os dejo el enlace donde he subido la imagen
http://k37.kn3.net/9C9621145.jpg (http://k37.kn3.net/9C9621145.jpg)

Forbidden
Título: Re:Ayuda con creacion de procesos con fork() en C
Publicado por: Cronos en Junio 25, 2012, 09:02:58 AM
Bien no se ve muy complicado, la verdad recien estoy viendo C y todavia no llego a usar fork. Tienes que resolverlo si o si con fork o puedes hacerlo como gustes? Porque seme ocurren varias formas de hacerlos con cadenas de procedimientos.
PD: Nose bien para que es fork si me explicas un poco una de esa saco una manera.
Saludos,, Cronos.-
Título: Re:Ayuda con creacion de procesos con fork() en C
Publicado por: Expermicid en Junio 25, 2012, 11:20:55 AM
Cronos, fork es un funcion que crea un proceso hijo.

Crea una copia de sí mismo, que actúa como un "proceso hijo" del proceso originario, llamado "padre". Los procesos resultantes son idénticos, salvo que tienen distinto número de proceso (PID).

Te dejo un ejemplo chonico.

pid_t pid = fork();
   int i;

   if(pid == 0)
   {
      /* Proceso hijo:
       * Cuando fork() devuelve 0, estamos en
       * el proceso hijo.
       * Aquí contamos hasta diez, uno cada segundo.
       */
      for(i=0; i < 10; i++)
      {
         printf("hijo: %d\n", i);
         sleep(1);
      }
      _exit(0); /* nota: exit en lugar de _exit */
   }
   else if(pid > 0)
   {
      /* Proceso padre:
       * Si no estamos en el proceso padre.
       * De nuevo contamos hasta diez.
       */
      for(i=0; i < 10; i++)
      {
         printf("padre: %d\n", i);
         sleep(1);
      }
   }
   else
   {   
      /* ha ocurrido un error. */
      fprintf(stderr, "no se ha podido bifurcar");
      exit(1);
   }


yo a esta funcion la estudie en sistemas operativos en mi carrera.

Aca te dejo donde saque el ejemplo para que sigas leyendo y otro documento que por ahi te sirve

http://es.wikipedia.org/wiki/Bifurcaci%C3%B3n_%28sistema_operativo%29
http://sopa.dis.ulpgc.es/ii-dso/leclinux/procesos/fork/LEC7_FORK.pdf

Saludos
Título: Re:Ayuda con creacion de procesos con fork() en C
Publicado por: chonico en Junio 26, 2012, 05:57:10 AM
El pseudocodigo quedaria algo parecido a esto, a falta de ponerle los printf:

pid=fork();  //crea el Padre1
  if(pid != 0)
     fork(); //creo que crea el hijo1 y Padre2
     ??
     for(i=0,i<2,i++) // crea hijo2 y hijo3
        fork();
     finpara;
  sino(pid==0)
  ??
  finsi;



Creo que me faltan lineas donde he puesto los ??...
Título: Re:Ayuda con creacion de procesos con fork() en C
Publicado por: Expermicid en Junio 26, 2012, 11:27:01 AM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
El pseudocodigo quedaria algo parecido a esto, a falta de ponerle los printf:

pid=fork();  //crea el Padre1
  if(pid != 0)
     fork(); //creo que crea el hijo1 y Padre2
     ??
     for(i=0,i<2,i++) // crea hijo2 y hijo3
        fork();
     finpara;
  sino(pid==0)
  ??
  finsi;



Creo que me faltan lineas donde he puesto los ??...

los printf era solo para ver lo que hace, si tu no lo necesitas no es necesario