3

我需要一些帮助来理解和实现我的应用程序中的各个进程之间的“等到进程完成”,这需要以逐步的方式进行。我的 java 文件运行一个批处理文件,然后运行一个脚本。在此结束时,我需要以连续方式(通过命令行)运行一系列命令。我在用着:

Runtime.getRuntime().exec("cmd /c start " + command)

运行我的批处理文件和命令(不确定该信息是否相关)。现在发生的事情是,我的应用程序中需要发生的第二步是在第一步(运行运行脚本的批处理文件)完成之前执行的。在运行下一系列命令之前,我需要完成第一步。我真的希望我说得通!

4

3 回答 3

6

exec() 返回一个 Process 实例,您可以在其上执行 waitFor()。

但请注意:我认为“开始”实际上会产生一个单独的 Windows 进程,因此 waitFor() 可能会在命令完成之前返回。尝试从命令行中删除“开始”?

于 2009-03-17T14:52:14.333 回答
3

简单的:

只需调用 Process 实例的方法 waitFor() 即可。它将停止线程,直到外部进程终止;

于 2009-12-10T16:31:51.437 回答
1

你能把这一系列命令放到它自己的批处理文件中吗?

否则,您可以使用ProcessBuilder来获取一个Process对象,并调用waitFor()它:

如有必要,使当前线程等待,直到此Process对象表示的进程终止。

编辑:实际上,exec()返回 a Process,所以你根本不需要打扰这个ProcessBuilder部分。

于 2009-03-17T14:47:00.993 回答