Как выполнить системные команды (linux / bsd) с помощью Java

Я пытаюсь быть дешевым и выполнять локальную системную команду ( uname -a ) в Java. Я хочу захватить вывод из uname и сохранить его в String. Каков наилучший способ сделать это? Текущий код:

 public class lame { public static void main(String args[]) { try { Process p = Runtime.getRuntime().exec("uname -a"); p.waitFor(); BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); String line=reader.readLine(); while (line != null) { System.out.println(line); line = reader.readLine(); } } catch(IOException e1) {} catch(InterruptedException e2) {} System.out.println("finished."); } } 

Ваш путь не за горами, что я, вероятно, сделаю:

 Runtime r = Runtime.getRuntime(); Process p = r.exec("uname -a"); p.waitFor(); BufferedReader b = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = ""; while ((line = b.readLine()) != null) { System.out.println(line); } b.close(); 

Разумеется, обращайтесь с любыми исключениями, которые вам нужны.

Это лучший способ сделать это. Также вы можете использовать ProcessBuilder, у которого есть конструктор переменных аргументов, поэтому вы можете сохранить строку или два кода

То, что вы делаете, выглядит великолепно. Если ваша команда возвращает только одну строку, вам не нужен цикл while, просто сохраните значение reader.readLine () в одной переменной String.

Кроме того, вы, вероятно, должны что-то делать с этими исключениями, а не просто глотать их.

Я знаю, что это очень старый, но все же …

Чтение статьи здесь: http://www.javaworld.com/article/2071275/core-java/when-runtime-exec—won-t.html
Я понимаю, что сначала вы должны прочитать streamи вывода и ошибок вашей исполняемой команды и только потом waitFor для возвращаемого значения вашего процесса.

  • Как получить уникальный идентификатор компьютера в Java (например, идентификатор диска или идентификатор материнской платы)?
  • Как преобразовать InputStream в виртуальный файл
  • Настраиваемые ярлыки в приложении Java
  • Скрытие дубликатов панелей инструментов Элементы в Eclipse
  • Как установить ориентацию JTextArea справа налево (внутри JOptionPane)
  • Синхронизация по целочисленному значению
  • Как рассчитать пересечение двух множеств?
  • Защищенный модификатор доступа в Java
  • Как добавить поддержку прокси для Jsoup (HTML-парсер)?
  • Таймер Javax.swing повторяет штраф, но ActionListener ничего не делает
  • Обработка мягких удалений с помощью Spring JPA
  • Давайте будем гением компьютера.