hola:
Tengo un ciclo para leer de buffer y luego imprimir lo que leyo en un TextArea y la manera de detener el ciclo es cuando el buffer sea Null.
en el Text Area deberia aparece escrito la salida de un Script que ejecuto en UNIX como se ve en color rojo.
Ingrese una opcion [1]Prueba [2]Salir
una vez que aparece esto se debe ingresar la opcion y sigue la ejecucion del script.
pero aparentemente el buffer nunca se hace null y se queda imprimiendo siempre lo mismo en un ciclo infinito y no se le pueden enviar los datos para la seleccion de la opcion [1] o [2]...
alguien tendra alguna sugerencia para que esto no suceda??
este es el codigo del hilo que lee el buffer de entrada.
muchas gracias
prestar atencion en esta parte del codigo
while ((line = in.readLine()) != null)
{
t.printOut(line);
}
class InputThread implements Runnable
{
BufferedReader in;
Main t;
public boolean keepGoing;
public InputThread(BufferedReader in, Main t)
{
this.in = in;
this.t = t;
this.keepGoing = true;
}
public void quitIt()
{
keepGoing = false;
}
public void run()
{
while (keepGoing)
{
String line;
try
{
while ((line = in.readLine()) != null)
{
t.printOut(line);
}
}
catch (IOException e)
{
t.printOut(e.getMessage());
}
}
}
}
Hola, yo creo que tienes el problema en el while del keepGoing ya que nunca lo pones a false. Podrias solucionarlo de la siguiente forma:
public void run()
{
while (keepGoing)
{
String line;
try
{
while ((line = in.readLine()) != null)
{
t.printOut(line);
}
}
catch (IOException e)
{
t.printOut(e.getMessage());
e.printStackTrace();
}
quitIt();
}
}
Aunque realmente no entiendo para que usas ese segundo while, asi que tb podria quedar así:
public void run()
{
String line;
try
{
while ((line = in.readLine()) != null)
{
t.printOut(line);
}
}
catch (IOException e)
{
t.printOut(e.getMessage());
e.printStackTrace();
}
}
Espero haber sido de utilidad, si me he confundido en algo hazmelo saber please.
P: Es recomendable añadir e.printStackTrace(); dentro de los catch ya que da mas info del error
hola:
gracias por tu sugerencia...
la verdad solo modifique esta parte del codigo y me funcionó perfectamente:
esta linea de codigo
process = Runtime.getRuntime().exec("/bin/bash");
lo cambie por esta linea
process = Runtime.getRuntime().exec("/bin/sh");
muchas gracias por tu ayuda...