在运行显示功能之前,需要等待cmd命令执行。
在执行显示功能之前,需要Process p
完全执行。
String command1 = "cmd /c start cmd.exe /k \"" + processCommand1 + " && " + processCommand2 +" && "+ exitCommand+"\"";
Process p = Runtime.getRuntime().exec(command1);
display();
答案 0 :(得分:8)
一种方法是使用Process.waitFor()
。但是,在您的示例中,您使用的是cmd /c start
,它将在后台异步运行实际程序。您应确保程序在没有start
的情况下同步启动,以便您可以等待它。
答案 1 :(得分:1)
最好使用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();
答案 2 :(得分:-2)
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()
此代码将等待特定的退出行或等待过程完成