示例#1
0
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
}
示例#2
0
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;
}