Java严格按顺序启动多个命令

时间:2015-08-27 13:06:23

标签: java processbuilder runtime.exec

如何以严格的顺序启动多个命令(使用ProcessBuilderRuntime.exec - 什么是最简单的?)

示例:

Process process1 = Runtime.getRuntime().exec("myFirstCommand");
process1.waitFor();
Runtime.getRuntime().exec("mySecondCommand");

工作正常,但是,我想仅在时调用Runtime.exec/ProcessBuilder.start() 立即返回。 所以基本上它应该像我从命令行工具调用包含这两个命令的批处理文件一样工作(我能做什么,因为这两个命令是动态生成的)。 mySecondCommand完成之前,不得启动myFirstCommand

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

如果你想只在第一个命令成功的情况下运行第二个命令,你可以执行类似

的操作
if (process1.exitValue() == 0) {
  Runtime.getRuntime().exec("mySecondCommand");
}

答案 1 :(得分:0)

你说"它应该像我从命令行工具调用包含这两个命令的批处理文件一样工作"。所以这样做对我有用:

String command = "someComand someParam";
command+= "\nsomeOtherCommand someOtherParam";
String commandname=Utilities.getRandomNameOfLengthLowerCase(10) + ".sh";
command+= "\nrm " + pathToContent + commandname;
Utilities.writeFile(command, pathToContent + commandname);
Process actProcess = Runtime.getRuntime().exec("chmod 777 " + pathToContent + commandname);
actProcess.waitFor();
actProcess = Runtime.getRuntime().exec(pathToContent + commandname);