如何从Java应用程序运行进程?

时间:2014-01-10 13:20:44

标签: java process runtime exec

我正在尝试运行一个控制台进程,我可以随后编写更多命令。我的代码就是这个

    ExecutorService service = Executors.newFixedThreadPool(2);
    Process process = Runtime.getRuntime().exec("cmd.exe");
    service.submit(new StreamReader(process.getInputStream(), System.out, "OUTPUT"));
    service.submit(new StreamReader(process.getErrorStream(), System.err, "OUTPUT"));
    //process.getOutputStream().close();
    PrintWriter writer = new PrintWriter(process.getOutputStream());

    Scanner sc = new Scanner(System.in);

    while(true){
        writer.println(sc.nextLine());
    }
}

流阅读器只需读取InputStream并使用PrintWriter将其写出来。如果我关闭OutputStream,我只会看到cmd.exe的输出。我在这里遇到什么问题以及如何让用户提供更多命令(如果我关闭OutputStream没有其他命令'输出打印到控制台)。

1 个答案:

答案 0 :(得分:2)

你应该在StreamReader中刷新()PrintWriter。