有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在cmd窗口中启动进程并获得输出

我想用Java在CMD窗口中启动一个进程,最简单的方法是

Runtime.getRuntime().exec("cmd /c start program.exe")

问题是,现在我无法从流程中获得输入。如何从进程中获取输出,并在单独的CMD窗口中运行它


共 (2) 个答案

  1. # 1 楼答案

    您的问题是start是一个单独的命令,其目的是启动一个与调用startcmd无关的全新进程。然后执行的任何start都不会连接到原始的cmd,并且不能被Java程序访问

    如果您需要访问子流程的in/out/err流,请不要使用start

  2. # 2 楼答案

    嘿兄弟如果你想打印进程的输出进程使用这个

    Process process= Runtime.getRuntime().exec("cmd /c start program.exe");
    BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
    
    String line = null;
    while ((line = br.readLine()) != null) {
            line = br.readLine();
            System.out.println(line);
    }
    

    有了这个,你将得到与cmd output完全相同的每个输出过程

    如果你想处理2个cmd,也许你可以用不同的exec来处理2个cmd

    Process process1 = Runtime.getRuntime().exec("cmd /c start program1.exe");
    Process process2 = Runtime.getRuntime().exec("cmd /c start program2.exe");
    

    如果你想用同一个线程运行,请阅读关于线程的java书籍,你可以用线程同时运行