C/Visual C - Como Abrir la entrada estandar del c

 
Vista:

Como Abrir la entrada estandar del c

Publicado por Angel Villa Garcia (1 intervención) el 17/03/2005 09:54:25
Nombre: Angel Villa Garcia

Tengo un problema. Estoy implementando un minishell en c y cuando implemento el sistema de pipes
el programa se me para debido a que el proceso padre cierra la entrada estandar para que pueda comunicarse con el siguiente hijo.
Las ordenes me las ejecuta bien pero como el proceso padre cerro la entrada estandar ( close(0)) cada vez que escribo en la consola no me escribe nada en la pantalla.
¿ como puedo volver a abrir el descriptor de entrada?
Ejemplo del programa
pipe(p)
pid=fork();
if(pid ==0)
{
close(1);
dup(p[0]);
close(p[0]);
close(p[1]);
//ejecuto la orden con execvp o execlp
}
else
{
close(0);
dup(p[0]);
close(p[1]);
close(p[0]);
}
// todo esto es la parte de un bucle que va procesando cada una de las ordenes
//cuando termina de ejecutar todo esto, el programa se bloquea porque debido a queno puede leer datos de la entrada estandar ya que el proceso padre a cerrado el descriptor 0
¿ COMO PUEDO abrir de nuevo la entrada estandar , una vez haya sido cerrada?
//entrada

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder