Цель моей программы - запустить интерактивный исполняемый файл командной строки из Java, чтобы я мог добавлять ввод данных при необходимости.В основном перенаправление ввода.
Я не смог найти ничего, что работало в сети, потому что флаг -c
не допускает интерактивность, но потом я увидел, что флаг -i
в терминале позволяет мне запускать команды с интерактивнымвход, если я передал ему файл .sh.
Однако, когда я попытался использовать этот флаг в Java, он не работал.У меня есть отдельные потоки ввода и вывода, поэтому, если бы я мог заставить это работать, кажется, что это было бы легко.
Соответствующий код:
ProcessBuilder pb = new ProcessBuilder()
.directory(new File(testDir))
.inheritIO()
.command("bash", "-i"
,"executor.sh");
proc = pb.start();
это ошибка, которую я получаю:
bash: cannot set terminal process group (1469): Inappropriate ioctl for device
bash: no job control in this shell
Если бы я мог заставить эту опцию -i работать, я был бы признателен за указатели на что-то еще, что позволило бы мне заставить работать интерактивный ввод, потому что ничто из того, что я пробовал, кажется, не решает эту проблему.проблема.