我正在尝试运行一个控制台进程,随后我可以向该进程写入更多命令。我的代码是这样的
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
则不会将更多命令的输出打印到控制台)。
最佳答案
您应该在 StreamReader 中刷新() PrintWriter。
关于java - 如何从 Java 应用程序运行进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21045419/