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; }
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; }