jueves, 22 de septiembre de 2011

PRACTICA 3

 #include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

#define NUM_HIJOS 3

int main (void)
{
int ret,i;
for(i=0;i<NUM_HIJOS;i++)
    {
        ret=fork();
        if(ret==0)
        {
            printf("Yo soy el hijo %d, mi padre es PID=%d, yo soy PID=%d \n",i,getpid(),getpid());
        }
        else if (ret>0)
        {
            ret=wait(NULL);
            while(ret>0)
            {
                ret=wait(NULL);
            }
  
        }
  
    if(ret==-1 && errno!=ECHILD)
        {
            perror("Falo en WAIT");
            exit(EXIT_FAILURE);
      
        exit(EXIT_SUCCESS); //  }
    }  
    else if(ret==-1)
    {
        perror("Fallo en Fork");
        exit(EXIT_FAILURE);
    }  
}  
}





#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

#define NUM_HIJOS 2

int main (void)
{
int ret,i;
for(i=0;i<NUM_HIJOS;i++)
    {
        ret=fork();
        if(ret==0)
        {
            printf("Yo soy el hijo %d, mi padre es PID=%d, yo soy PID=%d , el otro hijo es=%d\n",i,getpid(),getpid(),getppid());
        }
        else if (ret>0)
        {
            ret=wait(NULL);
            while(ret>0)
            {
                ret=wait(NULL);
                   
                       
           }
   
        }
   
    if(ret==-1 && errno!=ECHILD)
        {
            perror("Falo en WAIT");
            exit(EXIT_FAILURE);
       
        exit(EXIT_SUCCESS);
    }   
    else if(ret==-1)
    {
        perror("Fallo en Fork");
        exit(EXIT_FAILURE);
    }   
}   
}



2 comentarios:

  1. Proceso coche (“coche.c”)
    El proceso coche deberá (a) esperar a que primero haya sitio en la pista y, a conti-
    nuación, en la zona de embarque. (b) Una vez embarcados 4 pasajeros, inicia la travesía.
    Cuando finaliza, (c) espera a que hay sitio en la zona de desembarco y, (d) una vez
    desembarcados todos los pasajeros, el coche se retira de la pista.
    Se repetirá la secuencia anterior hasta que se selecciona una opción para finalizar el
    proceso coche. A continuación, se muestra un ejemplo de ejecución del proceso coche
    indicando los mensajes que se deben mostrar en pantalla:
    Esperando sitio en la pista ...
    Esperando para poder embarcar pasaje ...
    Puertas abiertas. Embarcando pasaje ...
    Empieza la travesía. Pulse ENTER para finalizar
    ....

    Esperando para poder desembarcar pasaje ...
    Puertas abiertas. Desembarcando pasaje ,,,
    El coche se retira de la pista (1 para otro viaje | 2 para finalizar)
    ....

    Esperando sitio en la pista ...

    ResponderEliminar