Я пытаюсь создать графический интерфейс, который будет взаимодействовать с терминальной программой, в данном случае консоль geth для Ethereum. Я могу запустить его, но я не знаю, как отправлять команды или извлекать выходные данные после его запуска.Взаимодействие с терминальным приложением Java или C++
Я пробовал другие программы, такие как Vim, но все полностью отделено от моей программы после ее запуска, и я не могу дать ей никаких дополнительных команд.
После поиска решений StackOverflow и соответствующих решений, это то, что я придумал, и это самое близкое, что я пришел к успеху.
public static void main(String[] args) throws IOException{
String[] command = {"gnome-terminal", "-e", "vim temp.txt"};
Process proc = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(proc.getOutputStream()));
writer.write(":x");
writer.flush();
writer.close();
}
}
Это запустит Vim, создав temp.txt, но тогда Vim просто сидит, и автор ничего не делает.
Является ли то, что я пытаюсь сделать, даже возможно?
P.S. Я в порядке с C++, но я бы предпочел Java для этого, поскольку я больше знаком с ним.
Как правило, интерактивные программы не работают таким образом. Вы можете читать/записывать процессы, но только stdin/stdout/stderr. Если это программа графического интерфейса, она будет зависеть от отправки ОС ее сообщений, таких как щелчки мыши, нажатия клавиш и т. Д. Что именно вы пытаетесь достичь? Если вы просто хотите вводить команды в терминальной программе и читать их вывод, просто выполните эти команды напрямую. – Kenney
Я изучаю криптовалютность, и это в конечном итоге станет графическим интерфейсом для Ethereum, который очень похож на биткойн. Большинство доступных в настоящее время графических интерфейсов являются ошибками и все еще находятся в разработке. Один из моих товарищей по команде работает над исправлениями для одного, но я пытаюсь начать с нуля и сделать что-то, что специализируется на наших потребностях. – halfg33k
Что значит «писатель ничего не делает»? Является ли количество записанных байтов равным нулю? – specializt