Ejemplo n.º 1
0
pid_t ejecutar_orden (const char *orden, int *pbackgr)
{
   char **args;
   pid_t pid;
   int indice_entrada;
   int indice_salida;
  
   if ((args=parser_orden(orden,&indice_entrada,&indice_salida,pbackgr))== NULL)
   {
     return(-1);
   }

   /* si la orden tiene redirecciones o tuberias, puede incluir aqui, fuera del */
   /* ambito de esta practica, el codigo para tratamiento de esas redirecciones.*/                     

	pid = fork();/*Crea el proceso hijo*/
	if (pid!=0){/*Esto es el padre, ya que el pid 0 corresponde al hijo*/
		/*printf("soy el padre\n");*//*comprobación*/
	}
	else{/*Esto es el Hijo, ya que el pid de este es 0*/
		execvp(args[0], args);
	}
	free_argumentos(args);
	return pid;
}
Ejemplo n.º 2
0
int ejecutar_orden(const char *orden, int *pbackgr){

int indice_entrada;
int indice_salida;
char ** comando;
int pid;
comando = (char **) parser_orden(orden ,&indice_entrada ,&indice_salida ,pbackgr );
if (comando==NULL){


return -1;
}else{
 if((pid=fork())==0){

//hijo
if(execvp(comando[0],comando)==-1){
//ERROR 

printf("Introdujo una orden incorrecta\n");

exit(0);
}



}
else {
return pid;
}




}
free_argumentos(comando);
return 0;
}