Я хочу открыть внешнее приложение с помощью java.взаимодействует с консольным приложением с помощью java
Process p = Runtime.getRuntime().exec("/Users/kausar/myApp");
Это запускает процесс, как я могу видеть в мониторе активности. Теперь я запускаю файл на самом деле консольное приложение, которое затем принимает команды и дает ответ на основе этих команд. , например, если я иду в терминал и поставить тот же
Kausars-MacBook-Air:~ kausar$ /Users/kausar/myApp
myApp>
Теперь я могу давать команды приложение, как, например
myApp> SHOW 'Hi There'
Эти команды, принятые в качестве входных данных с клавиатуры в приложении консоли, это а не параметры. Я видел разные подходы с параметрами. Я попробовал следующее, но не смог заставить его работать.
String res;
String cmnd = "SHOW \'Hi There\'";
OutputStream stdin = null;
InputStream stdout = null;
stdout = p.getInputStream();
stdin = p.getOutputStream();
stdin.write(cmnd.getBytes());
stdin.flush();
p.waitFor();
BufferedReader input = new BufferedReader(
new InputStreamReader(stdout));
while ((res = input.readLine()) != null) {
System.out.println(res)
}
input.close();
p.destroy();
Его отображение ничего в той же процедуре, что и «/ bin/bash -c ls», работает отлично. , пожалуйста, помогите!
Вы определяете stderr как входной поток и присваиваете p.getInptStream для stdout. – Guanxi
@ Guanxi исправил это, возможно, это была ошибка копирования пасты, спасибо, что указали это – kausar