在运行display函数之前,需要等待cmd命令执行。需要 Process p 在执行显示功能之前完全执行。
Process p
String command1 = "cmd /c start cmd.exe /k \"" + processCommand1 + " && " + processCommand2 +" && "+ exitCommand+"\""; Process p = Runtime.getRuntime().exec(command1); display();
nzkunb0c1#
一种方法是使用 Process.waitFor() . 但是在您的示例中 cmd /c start 它将在后台异步运行实际的程序。你应该确保程序是同步启动的,而不是 start 所以你可以等着。
Process.waitFor()
cmd /c start
start
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();
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()
此代码将等待特定的退出行或等待进程完成
3条答案
按热度按时间nzkunb0c1#
一种方法是使用
Process.waitFor()
. 但是在您的示例中cmd /c start
它将在后台异步运行实际的程序。你应该确保程序是同步启动的,而不是start
所以你可以等着。w6mmgewl2#
最好使用java.lang.processbuilder。javadoc有一个例子:https://docs.oracle.com/javase/7/docs/api/java/lang/processbuilder.html 类似于:
pxiryf3j3#
此代码将等待特定的退出行或等待进程完成