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

标签 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 则不会将更多命令的输出打印到控制台)。

最佳答案

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

关于java - 如何从 Java 应用程序运行进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21045419/

相关文章:

java - 使用同一 LAN 上的 2 台 PC 模拟来自互联网的连接的方法或应用程序

java - 变量末尾的 $ 有特殊意义吗?

Python在多处理中读取多个值

ruby-on-rails - 从生产服务器到 FB 的 FFMPEG 流式处理过程中的 FPS 下降

java - Android 模拟手表二手 w/BroadcastReceiver

linux - 使用 C++ 以编程方式监视进程状态

java - 如何找到运行 Java 程序所花费的时间?

javascript - 函数的运行时执行过程

objective-c - Objective C - 在调用方法时得到通知

java - Java 运行时环境检测到 fatal error - Microsoft SQL Server