ProcessBuilder GetOutPutStream и взаимодействие с процессами

StackOverflow https://stackoverflow.com/questions/8406446

  •  28-10-2019
  •  | 
  •  

Вопрос

У меня проблемы с взаимодействием с процессом с помощью getOutputStream.Вот мой код:

родовое слово

Вот результат:

родовое слово

this.sh просто запускает "gksudo apt-get install firefox"

Я не знаю, почему он прерывается и не принимает мой ввод "Y", спасибо.

Это было полезно?

Решение

Есть несколько проблем.

Первое : gksudo(1) выполняет некоторые грязные нестандартные трюки со стандартным вводом и стандартным выводом команд, которые он запускает. Это ужасно не удается. Хороший пример - это командная строка:

родовое слово

Я ожидал бы любого вывода и прерывания кода cat, как только код echo доставит данные. Неа. И gksudo, и cat существуют вечно. Нет вывода.

Ваш вариант использования

родовое слово

и это тоже не сработает. Пока эта проблема не решена, вы можете забыть о любом удаленном управлении, если запущенная программа требует какого-либо пользовательского ввода.

Второй : как уже указывал Роджер, waitFor() ожидает завершения команды. Это не произойдет в ближайшее время без какого-либо вмешательства пользователя и из-за проблемы с gksudo.

Третий . После небольшого изменения кода waitFor появляется следующий блокировщик: вы ждете завершения вывода процесса до EOF включительно. Это не произойдет в ближайшее время (см. «Первое» и «второе»).

Четвертый . Только после того, как процесс уже дважды мертв (см. «второй» и «третий»), он может получить некоторый ввод - ваш код генерируемого кода (для которого также может потребоваться дополнительный код кодового кода).


Вместо решения этой кучи проблем может быть лучший и гораздо более простой способ: не пытаться управлять генератором кодовых меток с помощью стандартного ввода. Просто дайте ему несколько подходящих вариантов, которые автоматически «ответят» на ваши вопросы. Быстрый сгенерированный кодовый код открывает некоторых кандидатов:

родовое слово

Подробнее см. в руководстве.

Думаю, это лучший и стабильный способ.

PS: Прямо сейчас я немного пи *** o *** Y, прошу прощения за тираду выше.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top