LINUX.ORG.RU

Все, не надо, вроде сделал:

String output = "";    
try {
  
  String line;
  Process p = Runtime.getRuntime().exec("echo test");
  BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
  while ((line = input.readLine()) != null) {
    output += line;
  }
  input.close();
}
catch (Exception err) {
  err.printStackTrace();
}

kovrik ★★★★★
() автор топика

Прочитай первую главу java pitfalls и ужаснись.

baverman ★★★
()
Ответ на: комментарий от kovrik

Ну надо вычитывать stderr. К сожалению простого способа это делать нет, надо или пускать отдельный тред, или склеить stderr и stdout через processBuilder.redirectErrorStream(true);

maxcom ★★★★★
()
Ответ на: комментарий от kovrik

> А какой сюрприз будет, если не вычитывать?

После того как процесс выдаст 8Kb в stderr он зависнет, потому как pipe заполнится

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

А такой еще вопрос: сюрприз будет когда выполняемая команда начнет писать в stderr?
Я же просто cat выполняю - если файла нету, он просто напишет, что No such file or directory и закончит работу. Если файл есть, то будет писать в stdout. Как он может в stderr 8КБ отдать?

kovrik ★★★★★
() автор топика
Ответ на: комментарий от svu

FFmpeg пишет в stderr всё во время работы, stdout вообще не используется.

hippi90 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.