Java - общение с дополнительным приложением через поток ввода - PullRequest
0 голосов
/ 13 августа 2010

Есть ли способ запустить приложение командной строки из Java, а затем отправить строки (команды) в свой входной поток и отобразить его ответ из своего выходного потока?

Я использую приложение сдовольно сложный интерфейс командной строки (VLC).В приложении есть интерпретатор, который отвечает на набор команд.Например, после запуска приложения я могу запустить или остановить фильм, введя команду 'pause' в командной строке.

Я хотел бы написать приложение Java, которое выполняет программу и выдает командык программе.Я видел много примеров Java-приложений, запускающих приложение и получающих поток вывода приложения, отображающий выходные данные приложения.Но я никогда не видел пример, в котором java-приложение отправляло бы запросы в суб-приложение.

Есть ли способ, которым я могу сделать это, используя java?

1 Ответ

1 голос
/ 13 августа 2010

До тех пор, пока порожденный процесс будет прослушивать ввод для ввода, конечно.

Вы запустите Процесс обычным способом (Runtime.exec()) - я не буду документироватьздесь, как вы говорите, вы видели множество примеров.

Затем, когда у вас есть дескриптор порожденного процесса, вы вызываете вызывающе-озадаченное getOutputStream .Это дает вам OutputStream, другой конец которого подключен к стандартному входу процесса.Следовательно, любые байты, записанные в этот поток, могут быть использованы вашим дочерним процессом, так же, как если бы вы печатали / передавали данные с консоли.

Я укажу на пару ресурсов, которые всегда стоит читать при работес процессами;Задания вырезания и вставки из произвольных результатов Google часто не покрывают крайние случаи должным образом и могут привести к тупикам:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...