如何在运行下一个命令之前等待cmd命令被执行?

k97glaaz  于 2021-07-09  发布在  Java
关注(0)|答案(3)|浏览(459)

在运行display函数之前,需要等待cmd命令执行。
需要 Process p 在执行显示功能之前完全执行。

String command1 = "cmd /c start cmd.exe /k \"" + processCommand1 + " && " + processCommand2  +" && "+ exitCommand+"\"";

Process p = Runtime.getRuntime().exec(command1);

display();
nzkunb0c

nzkunb0c1#

一种方法是使用 Process.waitFor() . 但是在您的示例中 cmd /c start 它将在后台异步运行实际的程序。你应该确保程序是同步启动的,而不是 start 所以你可以等着。

w6mmgewl

w6mmgewl2#

最好使用java.lang.processbuilder。javadoc有一个例子:https://docs.oracle.com/javase/7/docs/api/java/lang/processbuilder.html 类似于:

ProcessBuilder processBuilder = new ProcessBuilder("...");
...
Process process = processBuilder.start();
...
int exitCode = process.waitFor();
pxiryf3j

pxiryf3j3#

Process p;
    try {
        p = Runtime.getRuntime().exec(command);

        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));

        String line = "";
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
            output.append(line + "\n");
            if (line.contains(exitConfirm)) {
                break;
            }
        }
        p.waitFor();
    } catch (Exception e) {
        e.printStackTrace();
    }

    display()

此代码将等待特定的退出行或等待进程完成

相关问题