Я хочу выполнить процесс в течение некоторого времени, а затем получить результат и уничтожить процесс. Это мой кодПолучить результат результата процесса с помощью java
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader temp;
p.waitFor(7, TimeUnit.SECONDS);
temp=stdInput;
p.destroy();
System.out.println(temp.readLine());
, но я получаю в результате
java.io.IOException: Stream closed
Как скопировать результат после выполнения процесса 7 секунд? Если я использую этот код
p.waitFor(7, TimeUnit.SECONDS);
while ((inputRead=stdInput.readLine()) != null){
Helper.log(inputRead);
}
цикл в то время как никогда не прекращается, потому что этот процесс все еще жив после waitFor
, так что я должен уничтожить его. И если я уничтожу процесс, я больше не смогу получить содержимое stdInput
.
readLine() недостаточно? Вы думаете, что ready() может возвращать false, когда readLine() возвращает true? – davidxxx
цикл while никогда не будет завершен, потому что всегда будет что-то читать в буфере, пока процесс не остановится – sonia
'p.waitFor (7, TimeUnit.SECONDS);' блокирует поток для '7' секунд или до тех пор, пока процесс не завершится так нет необходимости заменять этот вызов 'Thread.sleep (7000);'. – Titus