lan*_*cex 2 java windows windows-server-2003
我正在尝试获取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;
}
Run Code Online (Sandbox Code Playgroud)
该程序在while条件下陷入无限循环."blah"和"退出while循环"从不输出到日志.我在win7本地机器和服务器上的命令提示符下运行命令,输出信息就好了.我也在我的本地机器上运行了上面的代码也工作正常.看起来Java和Windows Server 2003之间的一些问题是我在过去3小时的谷歌搜索中找不到的.任何帮助将非常感激.
rge*_*man 10
OutputStream在获取和使用之前,您需要获取并关闭InputStream.这将确认您已经开始完成向流程发送输入(在这种情况下,没有输入)的过程.
p.getOutputStream().close();
Run Code Online (Sandbox Code Playgroud)
请记住,在Process对象上,getInputStream()输入来自进程的输出流,getOutputStream()输出将转到进程的输入流.
| 归档时间: |
|
| 查看次数: |
2958 次 |
| 最近记录: |