void ejecutar_linea_ordenes( const char *orden) { int pid ; int backgr; int status; pid=ejecutar_orden(orden,&backgr); if (pid==-1){ printf("Error en la minishell\n"); }else{ if (backgr==0){ waitpid(pid,&status,0);// este es el caso cuando no hay ampersan } else{ struct sigaction sa; sa.sa_handler=child; sa.sa_flags =0; sigaction(SIGCHLD,&sa,NULL);//tratamiento de hijo zombie } } //fin }
void ejecutar_linea_ordenes(const char *orden) { pid_t pid; int backgr; /* si la orden es compuesta, puede incluir aqui, fuera del ambito*/ /* de esta practica, el codigo para tratamiento de tuberias. */ pid = ejecutar_orden(orden,&backgr); if (backgr!=0) { waitpid(pid,&backgr,WNOHANG); printf("Se está ejecutando en segundo plano, puede continuar usando la minishell mientras.\n"); } else{ wait(&backgr); } return; }