【发布时间】:2011-10-03 16:38:16
【问题描述】:
我正在尝试使用 Java 为 Linux 编写任务管理器。
我需要获取正在运行的程序的列表。 以及其他信息,例如:内存使用情况、cpu 使用情况...
这可能来自 Java 吗?
谢谢。
【问题讨论】:
标签: java linux process operating-system
我正在尝试使用 Java 为 Linux 编写任务管理器。
我需要获取正在运行的程序的列表。 以及其他信息,例如:内存使用情况、cpu 使用情况...
这可能来自 Java 吗?
谢谢。
【问题讨论】:
标签: java linux process operating-system
尝试使用exec(String command)。然后您可以从生成的Process 中获取输入流。
【讨论】:
try {
// Execute command
String command = "ps aux";
Process child = Runtime.getRuntime().exec(command);
// Get the input stream and read from it
InputStream in = child.getInputStream();
int c;
while ((c = in.read()) != -1) {
process((char)c);
}
in.close();
} catch (IOException e) {
}
来源(已修改):http://www.exampledepot.com/egs/java.lang/ReadFromCommand.html
【讨论】:
有可能,在使用 /proc 虚拟文件系统的系统中,您可以只遍历目录并找出 /proc 下的信息。
/proc 中编号的目录是正在运行的进程的进程 ID,这些目录中的项目有助于描述进程。
对于内存使用和 cpu 信息,有 /proc/meminfo 和 /proc/cpuinfo(以及更多)。希望这能让你开始。
对于缺少 /proc 虚拟文件系统的系统,您需要使用 JNI 绑定到将执行内核 API 调用的 C 代码,或者尝试通过 exec 运行本地命令行程序,同时将输出管道和解析回Java 程序。
【讨论】: