2-3-3-2:外部のシステムの呼び出し


・ Javaのアプリケーションは JVMの外部のプログラム(たとえばシステムの コマンドなど)を呼び出したりはできないのでしょうか? 実は可能です。 そのための機能は、 やはり外部のシステムとの橋渡しをする Runtimeクラスが提供します。 exec()という名前のメソッドがそれで、 このメソッドの引数に呼び出そうとする実行可能なプログラム名 (もしくはプログラム名と引数のリスト)を与えればいいのです。 exec()メソッドの返値は Processクラスのオブジェクトとなります。 このオブジェクトは、実行された JVM外部のプログラムのプロセスを表すものです。 そのプロセスの実行結果を標準入出力を通じてコントロールしたいような場合には、 Processクラスのオブジェクトに用意された入出力の機能を利用します。
 コマンドラインの引数に指定されたコマンドを Javaの JVM内部から呼び出す サンプル Exec.javaを紹介しましょう。 これを応用すれば C言語のシステムコールによる fork,exec に相当する プログラムを Javaで記述することも可能です。 実行は、たとえば次のようにして確認できるはずです。 実行できるプログラムはもちろんシステム及びユーザーの環境に依存します。 (Windowsの場合、 commnad.com内に含まれる内部コマンドの起動はうまくいかないようです。)


java  Exec  commandname