2
からバックグラウンドで起動したシェルスクリプトを:Javaプログラム
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の両方を取得できます(また、取得する必要があります) –