Я разрабатываю инструмент для своей школьной лаборатории. В котором Student использует терминал, и я хочу извлечь там входную запись для инструктора (файл журнала). Я знаю файл ввода вывода, и до сих пор мне удалось открыть терминал. Используя это
в данных класса
Process pr;
В функции
String command= "/usr/bin/xterm";
Runtime rt = Runtime.getRuntime();
try {
pr = rt.exec(command);
} catch (IOException e1) {
e1.printStackTrace();
}
и выйти из терминала, я использую (если условие, потому что ученик еще не смог открыть терминал и выйти из системы)
if(pr!=null)
pr.destroy();
Теперь в области выхода я хочу выйти из терминала и сохранить входной журнал. Нужен какой-то указатель на то, как получить входные данные.
Этот вопрос в Unix и Linux дает ответ на ваш вопрос:
Как запустить программу следующим образом:
program > /path/to/file
Это перенаправляет вывод программы в/путь/в/файл мгновенно.
Вы можете добавить аргументы к вызову процесса с помощью execute(String[] cmdarray)
с помощью вашей команды и аргументов, поэтому rt.execute(command, ">", "path/to/file");
И если вы хотите получить вывод в своем терминале, а также сохранить его в файл. Как только данные будут в файле, это будет очень легко прочитать из файла.
Я не знаю, будет ли это работать или нет, я не могу проверить его сейчас, и очень сложно добавить код в комментарий. обратная связь приветствуется.
попробуйте поместить этот код в свой раздел выхода и посмотреть, что произойдет.
BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();