Java以外で実施したい処理は結構あります。
たとえば、Javaで作成したアプリケーションのランチャー、管理ツールのようなものでは、他アプリケーションの起動・終了を行ったりします。
Javaから別のプログラム(外部プロセス)を実行できれば、いろいろなことができますね♪
外部プロセスを実行するサンプル
メモ帳を開きます。
また、開いたメモ帳が閉じるまで、アプリケーションは待ち続けます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import java.io.IOException; public class ProcessTest { public static void main(String[] args) { String execPath = "notepad.exe"; try { Process proc = new ProcessBuilder(execPath).start(); proc.waitFor(); //終わるまで待つ }catch(IOException | InterruptedException e) { e.printStackTrace(); } } } |
実行結果
メモ帳が開きます。
開いたメモ帳を閉じると、アプリケーションが終了します。
サンプルの解説
ProcessBuilder#start()により、外部のプロセスを実行することができます。
Process#waitFor()により、外部のプロセスが終了するまで待ち続けることができます。
Process#waitFor()を使用しない場合は、アプリケーションの処理がそのまま走るため、このサンプルでは即時アプリケーションが終了することになります。
別にメモ帳を開いておき、アプリケーションが開いたメモ帳以外を閉じたとしても、もちろんアプリケーションは終了しません。
また、Process#destroy()を使うと、実行している外部プロセスを終了させることもできます。