2013-07-31 68 views
1

如何解析linux游标程序的输出,例如java中的top? 我想有人给一个例子或链接一个。现在,我得到了像Process对象一样的顶级运行。顺便说一句,这只是一个这样的程序的例子。解析游标输出java

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

回答

1

你不能进行。使用curses编写的程序不会像典型的命令行程序那样输出字符流,甚至不会使用退格技巧输出字符流。相反,它使用操作系统特定的调用,例如ioctl和特定于实现的转义序列,如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进行分析,因为它会将它输出到我的屏幕:/也许我可以在Process对象中启动bash并从该bash进程开始顶部并获取输出?S –