Sto provando ad avviare un processo esternamente con Java e non posso leggere nulla dal suo InputStream.Impossibile leggere InputStream dal processo Java (Runtime.getRuntime(). Exec() o ProcessBuilder)
Se sto iniziando un processo con comandi come "ls", "ps" o "kill", tutto funziona correttamente. Posso avviare il processo e ottenere informazioni su InputStream o ErrorStream del processo.
Se provo a utilizzare un comando come "ftp" o "telnet", sia InputStream che ErrorStream bloccano il mio programma durante il tentativo di lettura. Nessuna informazione è passata attraverso questi flussi in qualsiasi momento.
Qualcuno può spiegare il comportamento? È semplicemente impossibile con questi comandi o ho un problema con la mia implementazione?
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());
}
Hai risolto questo problema? Puoi pubblicare nella soluzione? –