1

我如何解析 linux 游标程序的输出,例如 java 中的 top?我想有人举个例子或链接一个。现在我像 Process 对象一样运行良好。顺便说一句,top 只是此类程序的一个示例。

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

2 回答 2

1

你不能。使用 编写的程序curses不会像典型的命令行程序那样输出字符流,甚至不会像使用退格技巧那样输出字符流。相反,它使用特定于操作系统的调用(如TermInfoioctl中描述的那些)和特定于实现的转义序列。通常,Unix 系统上的此类程序是执行所有必要工作的库的简单前端,您最好的选择通常是使用这些库(如果没有可用的 JNI 包装器,则编写一个 JNI 包装器)。

在 的情况下top,您可以看到程序如何在其源代码中从操作系统读取进程信息,该源代码作为procps 包的一部分提供。

于 2013-07-31T17:42:38.840 回答
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);
}
于 2013-07-31T16:19:23.627 回答