モジュール java.base
パッケージ java.lang

クラスProcess

java.lang.Object
java.lang.Process

public abstract class Process extends Object
Processは、ProcessBuilder.startおよびRuntime.execによって開始されたネイティブ・プロセスの制御を提供します。 このクラスは、プロセスからの入力の実行、プロセスへの出力の実行、プロセスの完了を待つプロセスの終了ステータスのチェック、プロセスの破棄(kill)を行うメソッドを提供します。 ProcessBuilder.start()メソッドやRuntime.execメソッドはネイティブのプロセスを作成し、Processのサブクラスのインスタンスを返しますが、これを使えば、そのプロセスを制御したり情報を取得したりできます。

たとえば、ネイティブなウィンドウ処理プロセス、デーモン・プロセス、Microsoft Windows環境でのWin16/DOSプロセス、あるいはシェル・スクリプトといったプロセスです。

デフォルトでは、作成されたプロセスには独自の端末またはコンソールがありません。 その標準入出力(つまり標準入力、標準出力、標準エラー)の処理はすべて親プロセスにリダイレクトされますが、それらの情報にアクセスするには、メソッドgetOutputStream()getInputStream()、およびgetErrorStream()を使って取得されるストリームを使用します。 文字および行のI/Oストリームは、メソッドoutputWriter()outputWriter(Charset)inputReader()inputReader(Charset)errorReader()およびerrorReader(Charset)を使用して記述および読み取ることができます。 親プロセスは、これらのストリームを使用して、プロセスへの入力とプロセスへの出力を行います。 一部のネイティブ・プラットフォームでは、標準の入力ストリームと出力ストリームに対して限られたバッファ・サイズしか提供されないため、入力ストリームを速やかに書き込んでいないか、プロセスの出力ストリームを読み取っていないと、プロセスがブロックされたり、デッドロックにさえなったりします。

必要に応じて、ProcessBuilderクラスのメソッドを使用してprocess I/Oをリダイレクトすることもできます。

Processオブジェクトへの参照がなくなってもプロセスは強制終了されませんが、プロセスは非同期的に実行され続けます。

Processオブジェクトによって表されるプロセスが、Processオブジェクトを所有するJavaプロセスに対して非同期にまたは同時に実行する必要はありません。

1.5以降でProcessを作成するための推奨の方法は、ProcessBuilder.start()です。

Processのサブクラスは、「プロセスID」「プロセスに関する情報」「直接の子プロセスたち」、および「直接の子プロセスたちとその子プロセスたちの子孫」を含む完全に機能するProcessを提供するために、onExit()およびtoHandle()メソッドをオーバーライドする必要があります。 基本となるProcessまたはProcessHandleへの委譲は、通常、最も簡単で効率的です。

導入されたバージョン:
1.0
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    Processのデフォルトのコンストラクタです。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    プロセスの直接の子のスナップショットを返します。
    プロセスの子孫のスナップショットを返します。
    abstract void
    プロセスを終了します。
    プロセスを強制的に強制終了します。
    プロセスの標準エラーに接続されたBufferedReaderを返します。
    Charsetを使用してこのプロセスの標準エラーに接続されたBufferedReaderを返します。
    abstract int
    プロセスの終了値を返します。
    abstract InputStream
    プロセスのエラー出力に接続された入力ストリームを返します。
    abstract InputStream
    プロセスの通常の出力に接続された入力ストリームを返します。
    abstract OutputStream
    プロセスの通常の入力に接続された出力ストリームを返します。
    プロセスに関する情報のスナップショットを返します。
    プロセスの標準出力に接続されたBufferedReaderを返します。
    Charsetを使用してこのプロセスの標準出力に接続されたBufferedReaderを返します。
    boolean
    このProcessが表すプロセスが生存しているかどうかをテストします。
    プロセス終了のためのCompletableFuture<Process>を返します。
    ネイティブ・エンコーディングを使用して、プロセスの通常入力に接続されたBufferedWriterを返します。
    Charsetを使用してプロセスの通常入力に接続されたBufferedWriterを返します。
    long
    pid()
    プロセスのネイティブ・プロセスIDを返します。
    boolean
    destroy()の実装が正常にプロセスを終了する場合trueを返します。destroyの実装が強制的かつ即座にプロセスを終了する場合は、falseを返します。
    プロセスのProcessHandleを返します。
    abstract int
    必要な場合に、このProcessオブジェクトが表すプロセスが終了するまで現在のスレッドを待機させます。
    boolean
    waitFor(long timeout, TimeUnit unit)
    このProcessオブジェクトが表すプロセスが終了するか、指定された待機時間が経過するまで、必要に応じて現在のスレッドを待機させます。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

    • Process

      public Process()
      Processのデフォルトのコンストラクタです。
  • メソッドの詳細

    • getOutputStream

      public abstract OutputStream getOutputStream()
      プロセスの通常の入力に接続された出力ストリームを返します。 ストリームへの出力は、このProcessオブジェクトが表すプロセスの標準入力に渡されます。

      プロセスの標準入力がProcessBuilder.redirectInputを使用してリダイレクトされた場合、このメソッドは「ヌル出力ストリーム」を返します。

      APIのノート:
      getOutputStream()outputWriter()またはoutputWriter(Charset)の両方に書き込む場合、OutputStreamに書込みする前にBufferedWriter.flushをコールする必要があります。
      実装上のノート:
      実装にあたってのノート: 返される出力ストリームのバッファ処理をお薦めします。
      戻り値:
      プロセスの通常の入力に接続された出力ストリーム
    • getInputStream

      public abstract InputStream getInputStream()
      プロセスの通常の出力に接続された入力ストリームを返します。 ストリームは、このProcessオブジェクトが表すプロセスの標準出力から渡されたデータを取得します。

      プロセスの標準出力がProcessBuilder.redirectOutputを使用してリダイレクトされた場合、このメソッドは「ヌル入力ストリーム」を返します。

      そうでない場合、ProcessBuilder.redirectErrorStreamを使用してプロセスの標準エラーがリダイレクトされた場合、このメソッドによって返された入力ストリームは、マージされた標準出力とプロセスの標準エラーを受け取ります。

      APIのノート:
      getInputStream()およびinputReaderは、極めて慎重に使用してください。 BufferedReaderには、入力ストリームからのバッファ入力がある場合があります。
      実装上のノート:
      実装にあたってのノート: 返される入力ストリームのバッファ処理をお薦めします。
      戻り値:
      プロセスの通常の出力に接続された入力ストリーム
    • getErrorStream

      public abstract InputStream getErrorStream()
      プロセスのエラー出力に接続された入力ストリームを返します。 ストリームは、このProcessオブジェクトが表すプロセスのエラー出力から渡されたデータを取得します。

      ProcessBuilder.redirectErrorまたはProcessBuilder.redirectErrorStreamを使用してプロセスの標準エラーがリダイレクトされた場合、このメソッドは「ヌル入力ストリーム」を返します。

      APIのノート:
      getInputStream()およびinputReaderは、極めて慎重に使用してください。 BufferedReaderには、入力ストリームからのバッファ入力がある場合があります。
      実装上のノート:
      実装にあたってのノート: 返される入力ストリームのバッファ処理をお薦めします。
      戻り値:
      プロセスのエラー出力に接続された入力ストリーム
    • inputReader

      public final BufferedReader inputReader()
      プロセスの標準出力に接続されたBufferedReaderを返します。 ネイティブ・エンコーディングのCharsetは、標準出力からの文字、行またはストリーム行の読取りに使用されます。

      このメソッドは、native.encodingシステム・プロパティで指定されたCharsetを使用してinputReader(Charset)に委任します。 native.encodingが有効な文字セット名でない場合、またはサポートされていない場合は、Charset.defaultCharset()が使用されます。

      戻り値:
      native.encodingを使用する場合はBufferedReader、サポートされていない場合はCharset.defaultCharset()
      導入されたバージョン:
      17
    • inputReader

      public final BufferedReader inputReader(Charset charset)
      Charsetを使用してこのプロセスの標準出力に接続されたBufferedReaderを返します。 BufferedReaderは、標準出力の文字、行またはストリーム行の読取りに使用できます。

      文字は、このプロセスgetInputStream()からバイトを読み取ってデコードするInputStreamReaderによって読み取られます。 バイトはcharsetを使用して文字にデコードされ、不正な形式の入力文字およびマップ不能文字のシーケンスは文字セットのデフォルト置換に置き換えられます。 BufferedReaderは、InputStreamReaderから文字を読み込んでバッファします。

      このメソッドへの最初のコールによって、同じcharsetで再度コールされた場合、同じBufferedReaderが返されます。 このメソッドを別のcharsetで再度コールするとエラーになります。

      プロセスの標準出力がProcessBuilder.redirectOutputを使用してリダイレクトされた場合、InputStreamReader「ヌル入力ストリーム」から読み取られます。

      それ以外の場合、プロセスの標準エラーがProcessBuilder.redirectErrorStreamを使用してリダイレクトされた場合、このメソッドによって返された入力リーダーは、マージされた標準出力とプロセスの標準エラーを受け取ります。

      APIのノート:
      getInputStream()inputReader(Charset)の両方を使用すると、バッファ・リーダーが入力ストリームから前方に読み取られるため、予期しない動作が発生します。

      プロセスが終了し、標準入力がリダイレクトされていない場合、基礎となるストリームから使用可能なバイトの読取りはベスト・エフォート・ベースであり、予測不能になる可能性があります。

      パラメータ:
      charset - バイトを文字にデコードするために使用されるCharset
      戻り値:
      charsetを使用したプロセスの標準出力の場合はBufferedReader
      例外:
      NullPointerException - charsetnullの場合
      IllegalStateException - 異なる文字セット引数を使用して複数回コールした場合
      導入されたバージョン:
      17
    • errorReader

      public final BufferedReader errorReader()
      プロセスの標準エラーに接続されたBufferedReaderを返します。 ネイティブ・エンコーディングのCharsetは、標準エラーからの文字、行またはストリーム行の読取りに使用されます。

      このメソッドは、native.encodingシステム・プロパティで指定されたCharsetを使用してerrorReader(Charset)に委任します。 native.encodingが有効な文字セット名でない場合、またはサポートされていない場合は、Charset.defaultCharset()が使用されます。

      戻り値:
      native.encodingを使用する場合はBufferedReader、サポートされていない場合はCharset.defaultCharset()
      導入されたバージョン:
      17
    • errorReader

      public final BufferedReader errorReader(Charset charset)
      Charsetを使用してこのプロセスの標準エラーに接続されたBufferedReaderを返します。 BufferedReaderを使用すると、標準エラーの文字、行またはストリーム行を読み取ることができます。

      文字は、このプロセスgetErrorStream()からバイトを読み取ってデコードするInputStreamReaderによって読み取られます。 バイトはcharsetを使用して文字にデコードされ、不正な形式の入力文字およびマップ不能文字のシーケンスは文字セットのデフォルト置換に置き換えられます。 BufferedReaderは、InputStreamReaderから文字を読み込んでバッファします。

      このメソッドへの最初のコールによって、同じcharsetで再度コールされた場合、同じBufferedReaderが返されます。 このメソッドを別のcharsetで再度コールするとエラーになります。

      プロセスの標準エラーがProcessBuilder.redirectErrorまたはProcessBuilder.redirectErrorStreamを使用してリダイレクトされた場合、InputStreamReader「ヌル入力ストリーム」から読み取られます。

      APIのノート:
      getErrorStream()errorReader(Charset)の両方を使用すると、バッファ・リーダーがエラー・ストリームから前方に読み取られるため、予期しない動作が発生します。

      プロセスが終了し、標準エラーがリダイレクトされない場合は、基礎となるストリームから使用可能なバイトの読取りがベスト・エフォート・ベースで予測できない可能性があります。

      パラメータ:
      charset - バイトを文字にデコードするために使用されるCharset
      戻り値:
      charsetを使用したプロセスの標準エラーの場合はBufferedReader
      例外:
      NullPointerException - charsetnullの場合
      IllegalStateException - 異なる文字セット引数を使用して複数回コールした場合
      導入されたバージョン:
      17
    • outputWriter

      public final BufferedWriter outputWriter()
      ネイティブ・エンコーディングを使用して、プロセスの通常入力に接続されたBufferedWriterを返します。 文字をバッファリングすることによって、文字、配列、または文字列を効率良く文字型出力ストリームに書き込みます。

      このメソッドは、native.encodingシステム・プロパティで指定されたCharsetを使用してoutputWriter(Charset)に委任します。 native.encodingが有効な文字セット名でない場合、またはサポートされていない場合は、Charset.defaultCharset()が使用されます。

      戻り値:
      native.encodingシステム・プロパティの文字セットを使用したプロセスの標準入力に対するBufferedWriter
      導入されたバージョン:
      17
    • outputWriter

      public final BufferedWriter outputWriter(Charset charset)
      Charsetを使用してプロセスの通常入力に接続されたBufferedWriterを返します。 文字をバッファリングすることによって、文字、配列、または文字列を効率良く文字型出力ストリームに書き込みます。

      ライターによって書き込まれる文字はOutputStreamWriterを使用してバイトにエンコードされ、CharsetはこのProcessによって表されるプロセスの標準入力に書き込まれます。 誤った形式の入力およびマップ不能文字シーケンスは、文字セットのデフォルト置換で置き換えられます。

      このメソッドへの最初のコールによって、同じcharsetで再度コールされた場合、同じBufferedWriterが返されます。 このメソッドを別のcharsetで再度コールするとエラーになります。

      プロセスの標準入力がProcessBuilder.redirectInputを使用してリダイレクトされた場合、OutputStreamWriter「ヌル出力ストリーム」に書き込みます。

      APIのノート:
      BufferedWriterは、文字、文字の配列および文字列を書き込みます。 BufferedWriterPrintWriterでラップすると、プリミティブやオブジェクトの効率的なバッファリングおよび書式設定、および行末の自動フラッシュがサポートされます。 BufferedWriter.flush()メソッドをコールして、バッファ出力をプロセスにフラッシュします。

      getOutputStream()outputWriter()またはoutputWriter(Charset)の両方に書き込む場合、OutputStreamに書込みする前にBufferedWriter.flushをコールする必要があります。

      パラメータ:
      charset - 文字をバイトにエンコードするCharset
      戻り値:
      charsetを使用したプロセスの標準入力に対するBufferedWriter
      例外:
      NullPointerException - charsetnullの場合
      IllegalStateException - 異なる文字セット引数を使用して複数回コールした場合
      導入されたバージョン:
      17
    • waitFor

      public abstract int waitFor() throws InterruptedException
      必要な場合に、このProcessオブジェクトが表すプロセスが終了するまで現在のスレッドを待機させます。 このメソッドは、プロセスがすでに終了している場合にただちに戻ります。 プロセスがまだ終了していない場合、プロセスが終了するまで、呼び出しスレッドはブロックされます。
      戻り値:
      このProcessオブジェクトによって表されるプロセスの終了値。 0は正常終了を示す。
      例外:
      InterruptedException - 現在のスレッドが待機中にほかのスレッドによって割り込まれた場合、待機を終了してInterruptedExceptionがスローされる。
    • waitFor

      public boolean waitFor(long timeout, TimeUnit unit) throws InterruptedException
      このProcessオブジェクトが表すプロセスが終了するか、指定された待機時間が経過するまで、必要に応じて現在のスレッドを待機させます。

      プロセスがすでに終了している場合、このメソッドは値trueを返します。 プロセスがまだ終了しておらず、タイムアウト値がゼロ以下の場合、このメソッドは値falseでただちに復帰します。

      このメソッドのデフォルト実装は、exitValueをポーリングして、プロセスが終了したかどうかを確認します。 このクラスの具象実装では、このメソッドをより効率的な実装でオーバーライドすることを強くお薦めします。

      パラメータ:
      timeout - 待機する最長時間
      unit - timeout引数の時間単位
      戻り値:
      プロセスが終了した場合はtrue、プロセスが終了するまでに待機時間が経過した場合はfalse
      例外:
      InterruptedException - 待機中に現在のスレッドで割込みが発生した場合。
      NullPointerException - 単位がnullの場合
      導入されたバージョン:
      1.8
    • exitValue

      public abstract int exitValue()
      プロセスの終了値を返します。
      戻り値:
      このProcessオブジェクトによって表されるプロセスの終了値。 0は正常終了を示す。
      例外:
      IllegalThreadStateException - このProcessオブジェクトによって表されるプロセスがまだ終了していない場合
    • destroy

      public abstract void destroy()
      プロセスを終了します。 このProcessオブジェクトによって表されるプロセスが「正常終了」であるかどうかは、実装に依存します。 強制的なプロセス破壊は、プロセスの即時終了として定義されますが、正常終了は、プロセスが正常に終了することを可能にします。 プロセスが生存していない場合、何も実行されません。

      プロセスが終了すると、onExit()からのCompletableFuturecompletedになります。

    • destroyForcibly

      public Process destroyForcibly()
      プロセスを強制的に強制終了します。 このProcessオブジェクトによって表されるプロセスは、強制終了されます。 強制的なプロセス破壊は、プロセスの即時終了として定義されますが、正常終了は、プロセスが正常に終了することを可能にします。 プロセスが生存していない場合、何も実行されません。

      プロセスが終了すると、onExit()からのCompletableFuturecompletedになります。

      ProcessBuilder.start()およびRuntime.exec(java.lang.String)によって返されたProcessオブジェクトでこのメソッドを呼び出すと、強制的にプロセスを終了します。

      APIのノート:
      プロセスはすぐに終了しないことがあります。つまり、isAlive()は、destroyForcibly()が呼び出された後、短期間trueを返すことがあります。 このメソッドは、必要に応じてwaitFor()にチェーンされることがあります。
      実装要件:
      このメソッドのデフォルト実装では、destroy()を呼び出すため、プロセスが強制終了されない場合があります。
      実装上のノート:
      このクラスの具象実装では、このメソッドを準拠した実装でオーバーライドすることを強くお薦めします。
      戻り値:
      強制破壊されたプロセスを表すProcessオブジェクト
      導入されたバージョン:
      1.8
    • supportsNormalTermination

      public boolean supportsNormalTermination()
      destroy()の実装が正常にプロセスを終了する場合trueを返します。destroyの実装が強制的かつ即座にプロセスを終了する場合は、falseを返します。

      ProcessBuilder.start()およびRuntime.exec(java.lang.String)によって返されたProcessオブジェクトでこのメソッドを呼び出すと、プラットフォームの実装に応じてtrueまたはfalseが返されます。

      実装要件:
      この実装はUnsupportedOperationExceptionのインスタンスをスローし、他のアクションを実行しません。
      戻り値:
      true destroy()の実装が正常にプロセスを終了する場合。そうでなければ、destroy()はプロセスを強制終了
      例外:
      UnsupportedOperationException - Process実装がこの操作をサポートしていない場合
      導入されたバージョン:
      9
    • isAlive

      public boolean isAlive()
      このProcessが表すプロセスが生存しているかどうかをテストします。
      戻り値:
      このProcessオブジェクトによって表されるプロセスがまだ終了していない場合は、true
      導入されたバージョン:
      1.8
    • pid

      public long pid()
      プロセスのネイティブ・プロセスIDを返します。 ネイティブ・プロセスIDは、オペレーティング・システムがプロセスに割り当てる識別番号です。
      実装要件:
      このメソッドの実装は、プロセスIDをtoHandle().pid()として返します。
      戻り値:
      プロセスのネイティブ・プロセスID
      例外:
      UnsupportedOperationException - Process実装がこの操作をサポートしていない場合
      導入されたバージョン:
      9
    • onExit

      public CompletableFuture<Process> onExit()
      プロセス終了のためのCompletableFuture<Process>を返します。 CompletableFutureは、プロセスの終了時に同期または非同期に実行される可能性のある従属機能またはアクションをトリガーする機能を提供します。 プロセスが終了すると、CompletableFutureはプロセスの終了ステータスに関係なくcompletedになります。

      onExit().get()を呼び出すと、プロセスが終了してプロセスが返されるのを待ちます。 Futureは、プロセスが終了するかどうかを確認するために、プロセスがdonewaitかどうかを確認するために使用できます。 CompletableFutureの取消しはプロセスに影響を与えません。

      ProcessBuilder.start()から戻されたプロセスは、プロセスの終了を待つための効率的なメカニズムを提供するために、デフォルトの実装をオーバーライドします。

      APIのノート:
      onExitを使用するとwaitForの代わりに、追加の並行性とプロセス結果への便利なアクセスが可能になります。 ラムダ式を使用して、プロセス実行の結果を評価することができます。 値が使用される前に他の処理が行われる場合、onExitは現在のスレッドを解放し、値が必要な場合にのみブロックするのに便利なメカニズムです。
      たとえば、2つのファイルを比較するプロセスを起動し、それらが同じ場合はブール値を取得します:
         Process p = new ProcessBuilder("cmp", "f1", "f2").start();
          Future<Boolean> identical = p.onExit().thenApply(p1 -> p1.exitValue() == 0);
          ...
          if (identical.get()) { ... }
       
      プロセスは、ComputableFutureが完了し、従属アクションが呼び出される前にisAlive()で終了したことが観察されることがあります。
      実装要件:
      この実装は、正常に戻るまで別のスレッドでwaitFor()を繰り返し実行します。 waitForの実行が中断された場合、スレッドの割り込みステータスは保持されます。

      waitFor()が正常に戻ると、CompletableFutureはプロセスの終了ステータスに関係なくcompletedになります。 多数のプロセスが並行して待機している場合、この実装はスレッド・スタックのために多くのメモリーを消費する可能性があります。

      外部実装はこのメソッドをオーバーライドし、より効率的な実装を提供する必要があります。 たとえば、基になるプロセスに委任するには、次のようにします:

      
          public CompletableFuture<Process> onExit() {
             return delegate.onExit().thenApply(p -> this);
          }
       

      戻り値:
      プロセス用の新しいCompletableFuture<Process>
      導入されたバージョン:
      9
    • toHandle

      public ProcessHandle toHandle()
      プロセスのProcessHandleを返します。 ProcessBuilder.start()Runtime.exec(java.lang.String)によって返されるProcessオブジェクトのtoHandleは、SecurityManagerとRuntimePermission("manageProcess")のチェックを含むProcessHandle.of(pid)の同等物として実装されます。
      実装要件:
      この実装はUnsupportedOperationExceptionのインスタンスをスローし、他のアクションを実行しません。 サブクラスは、このメソッドをオーバーライドして、プロセスのProcessHandleを提供する必要があります。 メソッドpid()info()children()、およびdescendants()は、オーバーライドされない限り、ProcessHandleで処理されます。
      戻り値:
      プロセスのProcessHandleを返す
      例外:
      UnsupportedOperationException - Process実装がこの操作をサポートしていない場合
      SecurityException - セキュリティ・マネージャがインストールされていて、RuntimePermission("manageProcess")を拒否した場合
      導入されたバージョン:
      9
    • info

      public ProcessHandle.Info info()
      プロセスに関する情報のスナップショットを返します。

      ProcessHandle.Infoインスタンスには、利用可能なプロセスに関する情報を返すアクセサ・メソッドがあります。

      実装要件:
      この実装は、プロセスに関する情報をtoHandle().info()として返します。
      戻り値:
      プロセスに関する情報のスナップショット。常に非null
      例外:
      UnsupportedOperationException - Process実装がこの操作をサポートしていない場合
      導入されたバージョン:
      9
    • children

      public Stream<ProcessHandle> children()
      プロセスの直接の子のスナップショットを返します。 直接の子プロセスの親プロセスです。 通常、生存していないプロセスには子がありません。

      プロセスは非同期で作成され、終了することに注意してください。 プロセスが生存している保証はありません。

      実装要件:
      この実装は、直接の子たちを次のように返します: toHandle().children()
      戻り値:
      プロセスの直接の子プロセスであるプロセスの一連のProcessHandle
      例外:
      UnsupportedOperationException - Process実装がこの操作をサポートしていない場合
      SecurityException - セキュリティ・マネージャがインストールされていて、RuntimePermission("manageProcess")を拒否した場合
      導入されたバージョン:
      9
    • descendants

      public Stream<ProcessHandle> descendants()
      プロセスの子孫のスナップショットを返します。 プロセスの子孫は、再帰的にプロセスの子と子の子孫です。 通常、生存していないプロセスには子がありません。

      プロセスは非同期で作成され、終了することに注意してください。 プロセスが生存している保証はありません。

      実装要件:
      この実装は、すべての子を次のように返します: toHandle().descendants()
      戻り値:
      プロセスの子孫であるプロセスのProcessHandlesの連続ストリーム
      例外:
      UnsupportedOperationException - Process実装がこの操作をサポートしていない場合
      SecurityException - セキュリティ・マネージャがインストールされていて、RuntimePermission("manageProcess")を拒否した場合
      導入されたバージョン:
      9