Article View: es.comp.lenguajes.java
Article #29978Capturando stdin y stdout
From: Fernando Campos (GTS)
Date: Tue, 23 Sep 1997 00:00
Date: Tue, 23 Sep 1997 00:00
87 lines
2642 bytes
2642 bytes
Hola:
Estoy haciendo una aplicacion y un applet que se comunican por sockets.
Debo utilizar una aplicacion porque es la unica forma de ejecutar un
programa sin caer en la paranoia de la seguridad.
El programa a ejecutar es el octave y es el tipico programa que se
ejecuta por linea de comando (como el arj, por ejemplo). El applet envia
los comandos y recibe las respuestas.
Mi problema es que, mientras en Linux la aplicacion captura bien la
salida del programa y me la manda al applet, en Windows 95 se queda
literalmente colgado tras mandar unos cuantos caracteres.
Este es el codigo utilizado para abrir los Streams (en Linux):
###########################################################
String comando [] = new String[2];
comando[0] = "/usr/bin/octave";
comando[1] ="-i";
try{
Runtime runTime = Runtime.getRuntime();
proc = runTime.exec(comando);
veo_octave = proc.getInputStream();
datos_buffer = new BufferedInputStream(veo_octave);
datos = new DataInputStream(datos_buffer);
octave_ve = proc.getOutputStream();
tecleado = new DataOutputStream( new BufferedOutputStream(octave_ve));
salida = new PrintStream(tecleado);
}catch(IOException e){
System.out.println("Impossible open browser");
}
############################################################
y este el encargado de ir leyendo el output y enviar el resultado al
applet:
##########################################################3#
public void Lector (InputStream flujo) {
int lon = -1;
int aux=-10;
while (lon !=1) {
try {
aux = flujo.read();
print_salida.write(aux);
System.out.print((char) aux);
lon = flujo.available();
} catch (IOException e) {
; }
}
print_salida.flush();
System.out.print("\nsalgo\n");
}
###############################################################
El otro problemilla de este sistema es el de saber cuando se termina un
envio de datos lo que obliga a chequear continuamente la salida y a
veces provoca inexactitudes.
Alguien observa algun error de bulto?.
--
-----------------------
Fernando Campos Rivas
fcampos@tsc.uvigo.es
http://www.tsc.uvigo.es/~fcampos/
Technical Details
Message-ID:
<34279B9C.794BDF32@tsc.uvigo.es>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII-7-bit X-Google-Thread: 1116f3,b0d2da66eae8b046,start X-Google-Attributes: gid1116f3,public From: "Fernando Campos (GTS)" <fcampos@tsc.uvigo.es> Subject: Capturando stdin y stdout Date: 1997/09/23 Message-ID: <34279B9C.794BDF32@tsc.uvigo.es> X-Deja-AN: 274864784 Organization: CESGA Newsgroups: es.comp.lenguajes.java