程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Java卡在Windows Server 2003上的wmic命令执行的无限循环中大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Java卡在Windows Server 2003上的wmic命令执行的无限循环中?

开发过程中遇到Java卡在Windows Server 2003上的wmic命令执行的无限循环中的问题如何解决?下面主要结合日常开发的经验,给出你关于Java卡在Windows Server 2003上的wmic命令执行的无限循环中的解决方法建议,希望对你解决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,请注明来意。
标签: