大佬教程收集整理的这篇文章主要介绍了Java卡在Windows Server 2003上的wmic命令执行的无限循环中,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
您需要先获取并关闭您的,OutputStream
然后才能使用inputStream
。这将向您确认已开始的过程已经完成向该过程发送输入(在这种情况下,没有输入)。
p.getoutputStream().close();
请记住,在Process
对象上,getinputStream()
输入来自流程的输出流,而getoutputStream()
输出则进入流程的输入流。
我正在尝试获取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”和“退出循环时退出”永远不会输出到日志。我已经在win7本地计算机和输出信息的服务器上的命令提示符中都运行了命令。我还在本地计算机上运行了上面的代码,它也可以正常工作。在过去三个小时的搜寻中,似乎找不到Java和Windows
Server 2003之间的问题。任何帮助将非常感激。
以上是大佬教程为你收集整理的Java卡在Windows Server 2003上的wmic命令执行的无限循环中全部内容,希望文章能够帮你解决Java卡在Windows Server 2003上的wmic命令执行的无限循环中所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。