2
我现在从我的Java的代码启动一个shell脚本,看起来像这样:从java程序后台启动shell脚本
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.directory("/directory/where/the/script/is/located/");
String[] command = new String[]{"sh", "myScript.sh"};
processBuilder.command(command);
Map<String, String> env = processBuilder.environment();
//tweak the environment with needed additions
env.put(...);
Process p = processBuilder.start();
stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
// read the output from the command
String line;
while ((line = stdInput.readLine()) != null)
{
logger.fine(line);
}
p.waitFor();
int returnCode = p.exitValue();
// Return something according to the return code
return ...;
如果我现在要启动脚本,而不是等待它的结束(和从而失去了根据返回码返回的能力),但仍然能够事先调整环境?我应该如何继续?
谢谢
不等它结束也意味着你失去了从流程中获得输出的能力,对吧? – Nivas
@Nivas如果它是在不同的线程中启动的,那么过程中的stdout和stderr都可以(并且必须)被捕获 –