No se puede leer InputStream del proceso Java (Runtime.getRuntime (). Exec () o ProcessBuilder)
Estoy tratando de iniciar un proceso externamente con Java y no puedo leer nada de su InputStream.
Si estoy comenzando un proceso con comandos como "ls", "ps" o "kill", todo funciona bien. Puedo iniciar el proceso y obtener información sobre InputStream o ErrorStream del proceso.
Si trato de usar un comando como "ftp" o "telnet", InputStream y ErrorStream bloquean mi programa cuando intento leer. No se pasa información a través de estos flujos en ningún momento.
¿Alguien puede explicar el comportamiento? ¿No es posible con estos comandos o tengo un problema con mi implementación?
String processName = _configuration.getProgramCommand().getCommand();
ProcessBuilder procBuilder = new ProcessBuilder(processName);
System.out.println("Starting process "+processName);
_proc = Runtime.getRuntime().exec(processName);// procBuilder.start();
if(!procBuilder.redirectErrorStream()) {
_errorWorker = new ProcessErrorWorker(_proc);
_errorWorker.start();
}
String proc_start_answer = _configuration.getNextCommand().getCommand();
System.out.println("Waiting for process answer '"+proc_start_answer+"'");
BufferedReader input = new BufferedReader(new InputStreamReader(_proc.getInputStream()));
String answer = "";
try {
System.out.println("inputstream ready: "+input.ready());
answer+=input.readLine();
System.out.println("process answer: "+answer);
input.close();
} catch(Exception e) {
System.out.print(e.getMessage());
}