Ir a inicioFavoritosRecomiéndanos El Prisma.com - Ingeniería de Sistemas
Inicio > Regresar a Ingeniería de Sistemas 812 visitantes activos
Sockets - Comunicación entre Procesos Distribuidos



Navigation bar
  Start Previous page
 9 of 14 
Next page End 4 5 6 7 8 9 10 11 12 13 14  

enum tiposock{ SOCKET_DOS_VIAS, SOCKET_ENTRADA, SOCKET_SALIDA };  
/*  
*----------------------------------------------  
*                 estructuras                      
*----------------------------------------------  
*/  
struct simple  
{  
   char *token[MAX_TOKENS];            /* tokens del comando      */  
   int contoken;                       /* numero de tokens        */  
   int redirecSalida;                  /* tipo de IO_enum         */  
   int redirecEntrada;                 /* tipo de IO_enum         */  
   int adicion;                        /* VERDAD para modo añadir */  
   char fichSalida[MAX_STRING];        /* nombre fichero salida   */  
   char fichEntrada[MAX_STRING];       /* nombre fichero entrada  */  
   char socketSalida[MAX_STRING];      /* nombre socket salida    */  
   char socketEntrada[MAX_STRING];     /* nombre socket entrada   */  
};  
struct pipeline  
{  
   struct simple simple [MAX_SIMPLE];      /* comandos en pipe           */  
   int contcom;                            /* numero de comandos simples */  
};  
struct secuencia  
{  
   struct pipeline pipeline[MAX_PIPES];    /* pipes en secuencia  */  
   int contpipe;                           /* numero de pipes     */  
   int background;                         /* en background o no  */  
};  
/*  
*------------------------------------------------------------  
 
*   PROTOTIPO:   void ejecutaSimple ( struct simple* )  
*
 
*   DESCRIPCION: ejecuta un comando simple          
*  
*--------------------------------------------------------------  
*/  
void ejecutaSimple ( struct simple *p )  
{
 
        
      if (redireccion (p) == TRUE)   
      {  
     ejecutaPrimitiva (p);   
      }        
       
}  /* fin de ejecutaSimple */  
/*  
*------------------------------------------------------------------  
 
*   PROTOTIPO:   void ejecutaPrimitiva ( struct simple* )  
*
 
*   DESCRIPCION: ejecuta una primitiva simple a través del comando         
*                "execvp"  
*
 
*------------------------------------------------------------------  
*/  
void ejecutaPrimitiva ( struct simple *p )   
{    
    
   if ( ((p->redirecSalida != REDIREC_SERVIDOR) && (p->redirecEntrada !=
REDIREC_SERVIDOR))  
       
     &&  
           
     (   
       (p->redirecSalida == REDIREC_CLIENTE)  ||  
       (p->redirecEntrada == REDIREC_CLIENTE) ||  
       (p->redirecSalida == REDIREC_FICHERO)  ||  
       (p->redirecEntrada == REDIREC_FICHERO)   
     )   
      )  
         
       mandaPadre(SIGDIBUJAR);  
      execvp (p->token[0], p->token);  
    
    
      if (errno != 0)   /* ha ocurrido un error */  
     {  
       if (raiz->background == TRUE)          
         {  
            mandaPadreExit(SIGERRCMD);  
         }  
Previous page Top Next page
Inicio Última Actualización 2/7/2012 Sugerencias
 
Guía MBA y Masters
Conoce los mejores programas de MBA
Executive MBA y Global MBA