Мне нужно запустить внешний исполняемый файл таким образом, чтобы пользователь мог взаимодействовать с только что запущенной программой.
Например, в OpenSuse Linux есть менеджер пакетов - Zypper. Вы можете запустить zypper в командном режиме и дать ему такие команды, как установка, обновление, удаление и т. Д.
Я хотел бы запустить его из кода Java так, чтобы пользователь мог взаимодействовать с ним: вводить команды и видеть вывод и ошибки программы, которую он запустил.
Вот код Java, который я пытался использовать:
public static void main(String[] args) throws IOException, InterruptedException {
Process proc = java.lang.Runtime.getRuntime().exec("zypper shell");
InputStream stderr = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
char ch;
while ( (ch = (char)br.read()) != -1)
System.out.print(ch);
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
}
Но, к сожалению, я вижу только вывод:
zypper>
но что бы я ни писал, мой ввод не влияет на запущенную программу.
Как я могу делать то, что хочешь?