Javaで子プロセスを作成する方法

子プロセスの作成

javaのプログラムから子プロセスを作成する場合は、java.lang.Runtimeオブジェクトを使う。
public static Runtime getRuntime()でRuntimeオブジェクトを作成し、public Process Runtime.exec()で子プロセスを実行する。


子プロセスの制御

public Process Runtime.exec()で返されるjava.lang.Processオブジェクトを介して子プロセスの制御を行う。
子プロセスの終了を待つ、子プロセスの出力ストリームを取得する等を行える。


サンプル

envで設定した環境変数の下でcmdプログラムを実行する。子プロセスの標準出力は、outfileで示されるファイルにgzip形式で出力される。

OutputStream os = new GZIPOutputStream(new FileOutputStream(outfile));

Runtime run = Runtime.getRuntime();
Process proc = run.exec(cmd,env);

/* 
    子プロセスの標準出力はProcessの入力ストリームにリダイレクトされている。
*/
InputStream is = proc.getInputStream();
byte[] buf = new byte[1024];
int len;

while((len = is.read(buf))!=-1){
    os.write(buf,0,len);
}
proc.waitFor();
os.close();