我正在尝试获取 Windows Server 2003 机器上正在运行的进程及其文件路径的列表。我正在使用以下代码来尝试这样做:
protected Map<String,String> getProcesses() {
Map<String,String> processes = new HashMap<String,String>();
try {
String line;
Process p = null;
// Windows
if (OS.indexOf("win") >= 0) {
p = Runtime.getRuntime().exec("wmic process get description,executablepath");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
LOG.info("Entering while loop");
while ((line = input.readLine()) != null) {
LOG.info("blah");
String[] array = line.split("\\s+");
if (array.length > 1) {
processes.put(array[0], array[1]);
}
}
LOG.info("Exited while loop");
input.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return processes;
}
程序在 while 条件下陷入无限循环。“blah”和“Exited while loop”永远不会输出到日志中。我已经在我的 win7 本地计算机和输出信息的服务器上的命令提示符下运行了该命令。我还在我的本地机器上运行了上面的代码,它也可以正常工作。看起来这是 Java 和 Windows Server 2003 之间的一些问题,我在过去 3 小时的谷歌搜索中无法找到。任何帮助将非常感激。