Javaプロセスの構築方法
1594 ワード
Javaプロセスの構築方法
JDKでは、プロセスに直接関係するクラスはJava.lang.Processであり、抽象クラスである.この抽象クラスを実装するプロセスインプラントクラスもJDKに提供されており、ユーザがプロセスを作成すると、新しいプロセスインプラントインスタンスが伴うに違いない.同時にプロセス作成と密接に関連しているのは、JDK 1.5で開始されたプロセスBuilderであり、プロセスクラスに比べて、新しいプロセスを構成する環境、ディレクトリ、およびエラーフローと出力フローをマージするかどうかの簡単な構成を提供します.
Java.lang.Runtime.execメソッドとJava.lang.ProcessBuilder.startメソッドは、ローカルのプロセスを作成し、このプロセスを表すJava.lang.Processリファレンスを返します.
Runtime.execメソッドローカルプロセスの確立
この方法はJDK 1.5において6種類の異なる形式のパラメータ伝達を受け入れることができる.
彼らの主な違いは、コマンドパラメータの形式、提供される環境変数、および実行ディレクトリの定義です.
ProcessBuilder.startメソッドは、ローカルプロセスを確立します.
新しく作成したプロセスで現在のディレクトリと環境変数を使用する場合は、構成を必要とせずにコマンドラインとパラメータをProcessBuilderに直接入力し、startメソッドを呼び出すと、プロセスの参照が得られます.
環境変数と作業ディレクトリを構成してから、プロセスを作成することもできます.
ProcessBuilderのプロパティを事前に設定できることが、ProcessBuilderによるプロセスの作成の最大の利点です.また、コード内のpb変数の属性は、後の使用で必要に応じて変更することができる.後続のコードがプロパティを変更すると、変更後にstartメソッドで作成されたプロセスに影響し、変更前に作成されたプロセスインスタンスには影響しません.
JDKでは、プロセスに直接関係するクラスはJava.lang.Processであり、抽象クラスである.この抽象クラスを実装するプロセスインプラントクラスもJDKに提供されており、ユーザがプロセスを作成すると、新しいプロセスインプラントインスタンスが伴うに違いない.同時にプロセス作成と密接に関連しているのは、JDK 1.5で開始されたプロセスBuilderであり、プロセスクラスに比べて、新しいプロセスを構成する環境、ディレクトリ、およびエラーフローと出力フローをマージするかどうかの簡単な構成を提供します.
Java.lang.Runtime.execメソッドとJava.lang.ProcessBuilder.startメソッドは、ローカルのプロセスを作成し、このプロセスを表すJava.lang.Processリファレンスを返します.
Runtime.execメソッドローカルプロセスの確立
この方法はJDK 1.5において6種類の異なる形式のパラメータ伝達を受け入れることができる.
Process exec(String command)
Process exec(String [] cmdarray)
Process exec(String [] cmdarrag, String [] envp)
Process exec(String [] cmdarrag, String [] envp, File dir)
Process exec(String cmd, String [] envp)
Process exec(String command, String [] envp, File dir)
彼らの主な違いは、コマンドパラメータの形式、提供される環境変数、および実行ディレクトリの定義です.
ProcessBuilder.startメソッドは、ローカルプロセスを確立します.
新しく作成したプロセスで現在のディレクトリと環境変数を使用する場合は、構成を必要とせずにコマンドラインとパラメータをProcessBuilderに直接入力し、startメソッドを呼び出すと、プロセスの参照が得られます.
Process p = new ProcessBuilder("command", "param").start();
環境変数と作業ディレクトリを構成してから、プロセスを作成することもできます.
ProcessBuilder pb = new ProcessBuilder("command", "param1", "param2");
Map<String, String> env = pb.environment();
env.put("VAR", "Value");
pb.directory("Dir");
Process p = pb.start();
ProcessBuilderのプロパティを事前に設定できることが、ProcessBuilderによるプロセスの作成の最大の利点です.また、コード内のpb変数の属性は、後の使用で必要に応じて変更することができる.後続のコードがプロパティを変更すると、変更後にstartメソッドで作成されたプロセスに影響し、変更前に作成されたプロセスインスタンスには影響しません.