小编Kur*_*urt的帖子

与从Java应用程序调用的Powershell进程交互

我正在尝试运行一个Java应用程序,它在启动时创建一个新的PowerShell进程,然后再多次与它进行交互.调用powershell.exe并让它执行单个命令并返回输出对我来说很好.如果我不希望powershell进程立即完成/退出但保持打开以便我可以写入其outputStream并从inputStream接收结果,则会出现问题.

            String input = "dir";

            String[] commandList = {"powershell.exe", "-Command", "dir"}; 

            ProcessBuilder pb = new ProcessBuilder(commandList); 

            Process p = pb.start(); 

            if(input != null) { 
                PrintWriter writer = new PrintWriter(new OutputStreamWriter(new BufferedOutputStream(p.getOutputStream())), true); 
                writer.println(input); 
                writer.flush(); 
                writer.close(); 

            } 

            //p.getOutputStream().close();

            Gobbler outGobbler = new Gobbler(p.getInputStream()); 
            Gobbler errGobbler = new Gobbler(p.getErrorStream()); 
            Thread outThread = new Thread(outGobbler); 
            Thread errThread = new Thread(errGobbler); 
            outThread.start(); 
            errThread.start(); 

            System.out.println("Waiting for the Gobbler threads to join...");

            outThread.join(); 
            errThread.join(); 

            System.out.println("Waiting for the process to exit...");                                                                           

                int exitVal = p.waitFor(); 
                System.out.println("\n****************************"); 
                System.out.println("Command: …
Run Code Online (Sandbox Code Playgroud)

java powershell process

6
推荐指数
1
解决办法
4019
查看次数

标签 统计

java ×1

powershell ×1

process ×1