Me gustaría obtener el resultado de un comando de shell de larga ejecución, ya que está disponible en lugar de esperar a que se complete el comando. Mi código se ejecuta en un nuevo hiloJava Runtime.exec() salida asíncrona
Process proc = Runtime.getRuntime().exec("/opt/bin/longRunning");
InputStream in = proc.getInputStream();
int c;
while((c = in.read()) != -1) {
MyStaticClass.stringBuilder.append(c);
}
El problema con esto es que mi programa en/opt/bin/longRunning tiene que completar antes de que se le asigna InputStream y leer. ¿Hay alguna buena manera de hacer esto de forma asíncrona? Mi objetivo es que una solicitud ajax devuelva el valor actual MyStaticClass.stringBuilder.toString() cada segundo más o menos.
Estoy atascado en Java 5, fyi.
Gracias! W
Gracias a todos! Apache Commons 'Exec es la forma en que fui. @Paul Cager, también brindó una excelente idea. La secuencia de comandos que se llamaba en realidad detectaba que estaba siendo canalizado y bloqueado. Sin embargo, la secuencia que obtiene de Runtime.exec está sincronizada, por lo que si intenta leerla, está bloqueando. – wmarbut