2013-07-31 3 views
1

Как я могу разобрать вывод из программы курсора linux, например, наверху в java? Я бы хотел, чтобы кто-нибудь привел пример или ссылку. Прямо сейчас я получил верх, как объект Process. И btw top - всего лишь пример такой программы.Вывод курсора курсора java

String[] args={"top"}; 
Process process = new ProcessBuilder(args).start(); 

ответ

1

Вы не можете. Программа, написанная с использованием curses, не выводит поток символов, как типичная программа командной строки, или даже одна, использующая трюк обратного пространства. Вместо этого он использует специфические для операционной системы вызовы, такие как ioctl и конкретные escape-последовательности для реализации, подобные описанным в TermInfo. Как правило, такие программы в Unix-системах являются простыми интерфейсами для библиотек, которые выполняют всю необходимую работу, и ваш лучший вариант обычно заключается в использовании этих библиотек (запись JNI-обертки, если таковая отсутствует).

В случае top вы можете видеть, как программа считывает информацию о процессе из ОС в своем исходном коде, доступную как часть the procps package.

0

Первым шагом будет прочесть все данные, обрабатывать выходные сигналы, что может быть сделано с помощью метода Process.getInputStream()

Process p = new ProcessBuilder("top").start(); 
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); 
String line; 
while((line = br.readLine()) != null) { 
    System.out.println(line); 
} 
+0

Этот код дает пустой BufferedReader, выход не может быть разобран таким образом –

+0

Если вышеприведенный код ничего не печатает, то команда 'top' не печатает вывод? – sanbhat

+0

правильный, вероятно, с помощью какой-то курсорной особой вещи, и это именно то, что нужно опереться на разбор. Его четкий синтаксический анализ, выполненный bash, поскольку он выводит его на мой экран:/Может быть, я могу начать bash в объекте Process и начать сверху с этого процесса bash и получить вывод?: S –

Смежные вопросы