Procesos padres e hijos en Linux con C

Se pide crear un programa que el proceso principal cree n procesos hijos ( npasado por el usuario y  n<100) que ejecuten el mismo programa. Cada proceso tiene que mostrar un mensaje con el índice de hijo que es y su PID. Además el proceso principal se tiene que asegurar que todos los hijos han finalizado antes de acabar.


Fuente: http://www.monografias.com/trabajos26/estados-proceso-hilos/estados-proceso-hilos.shtml

El código que se propone es: 

 
 #include  sys types.h
 #include  unistd.h
 #include  stdio.h
 #include  stdlib.h
 #include  sys wait.h

 int main(void)
 {  
  int i=0;   // contador
  int a;   // valor solicitado
  int status=0;  // id. de estado       

  printf(" Introduzca el número de procesos hijos que desea crear.\n Debe ser numero entero entre 0 y 100: ");
  scanf("%d",&a);
  if (a == 0)
 {
   printf ("X-No hacemos nada\n");
   exit(0);
 }
  if ((a > 0) && (a < 101))
 {
          printf("|-Parent Process -> PID:%d\n", getpid());
          for(i=0; i<=a; i++)
          {
            pid_t pid=fork();
     if (pid<0 data-blogger-escaped-cero="" data-blogger-escaped-d-="" data-blogger-escaped-entonces="" data-blogger-escaped-es="" data-blogger-escaped-hijo="" data-blogger-escaped-hild="" data-blogger-escaped-if="" data-blogger-escaped-n="" data-blogger-escaped-pid="" data-blogger-escaped-printf="" data-blogger-escaped-proceso="" data-blogger-escaped-process="" data-blogger-escaped-rror="" data-blogger-escaped-si="" data-blogger-escaped-un=""> PID:%d - Parent Process %d\n", i, getpid(), getppid());          
            exit(0);                      
          }
           wait(&status);  // el padre espera a los hijos
        }
   else
 {
    printf("X-El valor %d está fuera de rango.\n", a);
 }
   return 0;
 }

Resultado:


No hay comentarios:

Publicar un comentario