Можно ли запускать терминальные графические приложения через java-ProcessBuilder
Можно ли запускать подпроцессы, такие как Far/MidnightCommander (или другое терминальное приложение с ncurses/graphical-interface) из Java-приложения с помощью ProcessBuilder или каким-либо другим способом?
Стандартные примеры с ProcessBuilder отлично работают с чем-то простым, например, ping
new ProcessBuilder().command("ping -n 4 google.com").start(); // :)
, но совсем не работал с далеким
new ProcessBuilder().command("far").start(); // :(
1 ответ
Решение
Да.
Этим приложениям для работы необходим доступ к оконечному устройству. Если вы запустили java-программу с терминала, вы можете использовать тот же терминал, позволив новому процессу унаследовать его:
new ProcessBuilder().inheritIO().command("top").start(); // :)
В противном случае вам нужно запустить новый эмулятор терминала для запуска программы.
new ProcessBuilder().command("xterm", "top").start(); // :)