команда запуска Java-оболочки с EOF

1

Я хочу запустить эту команду из java, но я не могу этого сделать. Не могли бы вы мне помочь? Когда я пытаюсь запустить это из ssh, он отлично работает.

String cmd = "myprog -t << EOF show version EOF";

Процесс p = Runtime.getRuntime(). Exec (cmd);

Теги:
exec
process
eof

1 ответ

1
Лучший ответ

Ваша команда записывает стандарт в ваш процесс. Вы могли бы просто написать этот процесс из своего Java-кода. Что-то вроде,

String cmd = "myprog -t";
String arg = "show version";
try {
    Process p = Runtime.getRuntime().exec(cmd);
    PrintStream ps = new PrintStream(p.getOutputStream());
    ps.println(arg);
    ps.flush();
    final StringBuilder sb = new StringBuilder();
    final InputStream is = p.getInputStream();
    Thread t = new Thread(new Runnable() {
        @Override
        public void run() {
            try (BufferedReader br = new BufferedReader(
                    new InputStreamReader(is))) {
                String line;
                while ((line = br.readLine()) != null) {
                    sb.append(line).append(System.lineSeparator());
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
    t.start();
    try {
        p.waitFor();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    try {
        t.join();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println(sb.toString());
} catch (IOException e) {
    e.printStackTrace();
}
  • 0
    Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню