Quiero poner en marcha un proceso de Java, lee su salida, y obtener su código de retorno. Pero mientras se está ejecutando, quiero poder cancelarlo. Empiezo con el lanzamiento del proceso:Ejecutar programa externo de Java, lee de salida, permite la interrupción
ProcessBuilder pb = new ProcessBuilder(args);
pb.redirectErrorStream(true);
Process proc = pb.start();
Si llamo proc.waitFor(), no puedo hacer nada hasta que el proceso finalice. Así que estoy asumiendo que necesito algo como esto:
while (true) {
see if process has exited
capture some output from the process
decide if I want to cancel it, and if so, cancel it
sleep for a while
}
es esto correcto? ¿Alguien puede darme un ejemplo de cómo hacer esto en Java?
¿Qué pasa si no hay salida por un tiempo?¿No va a colgar esto en br.readLine() hasta que haya una línea lista para leer? No estoy seguro de cuánto o poco enviará mi proceso. –
Ir a punto. Puede crear un hilo separado para analizar si el proceso debe detenerse. Podría correr en paralelo al ciclo while y destruir el proceso si se cuelga por algún tiempo (o cualquier otra condición). –
(i significaba "buen punto") –