🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.lenguajes.java
Article #29978

Capturando stdin y stdout

#29978
From: Fernando Campos (GTS)
Date: Tue, 23 Sep 1997 00:00
87 lines
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-mail

Show 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