Tôi đang cố bắt đầu một quá trình bên ngoài với Java và không thể đọc bất cứ thứ gì từ InputStream của nó.Không thể đọc InputStream từ Java Process (Runtime.getRuntime(). Exec() hoặc ProcessBuilder)
Nếu tôi bắt đầu quá trình với các lệnh như "ls", "ps" hoặc "kill", mọi thứ hoạt động tốt. Tôi có thể bắt đầu quá trình và nhận thông tin trên InputStream hoặc ErrorStream của Process.
Nếu tôi cố sử dụng lệnh như "ftp" hoặc "telnet", cả InputStream và ErrorStream đều chặn chương trình của tôi khi cố gắng đọc. Không có thông tin nào được truyền qua các luồng này bất kỳ lúc nào.
Có ai có thể giải thích về hành vi không? Là nó chỉ không thể với các lệnh này hoặc tôi có một vấn đề với việc thực hiện của tôi?
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());
}
Bạn có gặp phải vấn đề này không? Bạn có thể đăng bài trong giải pháp không? –