- すべてのスーパー・インタフェース:
- Comparable<ProcessHandle>
Processインスタンスが起動され、さらにプロセスの入力、出力、およびエラー・ストリームへのアクセスが提供されます。 
 ネイティブ・プロセスIDは、オペレーティング・システムがプロセスに割り当てる識別番号です。 プロセスID値の範囲は、オペレーティング・システムによって異なります。 たとえば、組み込みシステムでは16ビット値を使用する場合があります。 プロセスに関するステータス情報はネイティブ・システムから取得され、非同期に変更されることがあります。プロセスは自発的に作成または終了することがあります。 プロセスが終了してプロセスIDが新しいプロセスに再利用されるまでの時間は予測できません。 競合ステータスは、プロセスのステータスをチェックし、プロセスのステータスに応じて変化する可能性があります。 ProcessHandlesを使用する場合は、基本となるプロセスの活性やアイデンティティに関する仮定を避けてください。
 各ProcessHandleは、ネイティブ・システム内のプロセスを識別して制御することができます。 ProcessHandlesは、ファクトリ・メソッドcurrent()、of(long)、children()、descendants()、parent()、allProcesses()から返されます。 
 
 ProcessBuilderによって作成されたProcessインスタンスは、プロセスに関する情報を提供するProcessHandleに対して問合せできます。 ProcessHandle参照は自由に配布されるべきではありません。 
 
 onExit()から入手可能なCompletableFutureを使用すると、プロセスの終了を待つことができ、場合によっては依存するアクションを起動することができます。
 
 ファクトリ・メソッドは、RuntimePermission("manageProcess")をチェックするSecurityManagerを使用してProcessHandlesへのアクセスを制限します。 プロセスを制御する能力もネイティブ・システムによって制限されています。ProcessHandleは、ネイティブ・アプリケーションが許可するよりもネイティブ・プロセスへのアクセスや制御を提供しません。 
- 実装要件:
- ProcessHandlesがサポートされない場合、ファクトリ・メソッドは一貫してUnsupportedOperationExceptionをスローする必要があります。 このクラスのメソッドは、オペレーティング・システムがプロセスの問合せまたは終了を許可しない場合、UnsupportedOperationExceptionをスローします。ProcessHandle静的ファクトリ・メソッドは、value-based、不変でスレッド・セーフなインスタンスを返します。 プログラマは、equalのインスタンスを交換可能として処理し、同期にインスタンスを使用しないようにする必要があります。そうしないと、予期しない動作が発生する可能性があります。 たとえば、将来のリリースでは、同期が失敗する可能性があります。equalsまたはcompareToメソッドを使用して、ProcessHandlesを比較します。
- 導入されたバージョン:
- 9
- 関連項目:
- 
ネストされたクラスのサマリーネストされたクラス
- 
メソッドのサマリー修飾子と型メソッド説明static Stream<ProcessHandle>現在のプロセスから見えるすべてのプロセスのスナップショットを返します。children()プロセスの現在の直接子のスナップショットを返します。intcompareTo(ProcessHandle other) このProcessHandleと指定したオーダーのProcessHandleを比較します。static ProcessHandlecurrent()現在のプロセスのProcessHandleを返します。プロセスの子孫のスナップショットを返します。booleandestroy()プロセスを強制終了するようにリクエストします。booleanプロセスを強制的に強制終了するようにリクエストします。booleanotherオブジェクトが非nullで、同じ実装であり、同じシステム・プロセスを表す場合は、trueを返します; それ以外の場合は、falseを返します。inthashCode()このProcessHandleのハッシュ・コード値を返します。info()プロセスに関する情報のスナップショットを返します。booleanisAlive()このProcessHandleが表すプロセスが生存しているかどうかをテストします。static Optional<ProcessHandle>of(long pid) 既存のネイティブ・プロセスのOptional<ProcessHandle>を返します。onExit()プロセスの終了のためのCompletableFuture<ProcessHandle>を返します。parent()親プロセス用のOptional<ProcessHandle>を返します。longpid()プロセスのネイティブ・プロセスIDを返します。booleandestroy()の実装が正常にプロセスを終了する場合は、trueを返します。
- 
メソッドの詳細- 
pidlong pid()プロセスのネイティブ・プロセスIDを返します。 ネイティブ・プロセスIDは、オペレーティング・システムがプロセスに割り当てる識別番号です。 オペレーティング・システムは、プロセスが終了した後にプロセスIDを再利用することがあります。equalsまたはcompareToを使用してProcessHandlesを比較してください。- 戻り値:
- プロセスのネイティブ・プロセスID
- throws:
- UnsupportedOperationException- 実装がこの操作をサポートしていない場合
 
- 
ofstatic Optional<ProcessHandle> of(long pid) 既存のネイティブ・プロセスのOptional<ProcessHandle>を返します。- パラメータ:
- pid- ネイティブ・プロセスID
- 戻り値:
- プロセスのPIDのOptional<ProcessHandle>。プロセスが存在しない場合、Optionalは空です。
- throws:
- SecurityException- セキュリティ・マネージャがインストールされていて、RuntimePermission("manageProcess")を拒否した場合
- UnsupportedOperationException- 実装がこの操作をサポートしていない場合
 
- 
currentstatic ProcessHandle current()現在のプロセスのProcessHandleを返します。 ProcessHandleを使用して現在のプロセスを破棄することはできません。代わりにSystem.exitを使用してください。- 戻り値:
- 現在のプロセスのProcessHandle
- throws:
- SecurityException- セキュリティ・マネージャがインストールされていて、RuntimePermission("manageProcess")を拒否した場合
- UnsupportedOperationException- 実装がこの操作をサポートしていない場合
 
- 
parentOptional<ProcessHandle> parent()親プロセス用のOptional<ProcessHandle>を返します。 ゾンビ状態のプロセスには通常、親がないことに注意してください。- 戻り値:
- 親プロセスのOptional<ProcessHandle>。子プロセスに親がない場合、または親が利用できない場合は、オペレーティング・システムの制限のためにOptionalが空です
- throws:
- SecurityException- セキュリティ・マネージャがインストールされていて、RuntimePermission("manageProcess")を拒否した場合
 
- 
childrenStream<ProcessHandle> children()プロセスの現在の直接子のスナップショットを返します。 直接の子プロセスのparent()はプロセスです。 通常、not aliveのプロセスには子プロセスがありません。プロセスは非同期で作成され、終了することに注意してください。 プロセスが 生存している保証はありません。- 戻り値:
- プロセスの直接の子プロセスであるプロセスの一連のProcessHandle
- throws:
- SecurityException- セキュリティ・マネージャがインストールされていて、RuntimePermission("manageProcess")を拒否した場合
 
- 
descendantsStream<ProcessHandle> descendants()プロセスの子孫のスナップショットを返します。 プロセスの子孫は、再帰的にプロセスの子と子の子孫です。 通常、生存していないプロセスには子がありません。プロセスは非同期で作成され、終了することに注意してください。 プロセスが 生存している保証はありません。- 戻り値:
- プロセスの子孫であるプロセスのProcessHandlesの連続ストリーム
- throws:
- SecurityException- セキュリティ・マネージャがインストールされていて、RuntimePermission("manageProcess")を拒否した場合
 
- 
allProcessesstatic Stream<ProcessHandle> allProcesses()現在のプロセスから見えるすべてのプロセスのスナップショットを返します。プロセスは非同期で作成され、終了することに注意してください。 ストリーム内のプロセスが生存している、またはスナップショットの開始以降に他のプロセスが作成されていないという保証はありません。 - 戻り値:
- すべてのプロセスのProcessHandleのストリーム
- throws:
- SecurityException- セキュリティ・マネージャがインストールされていて、RuntimePermission("manageProcess")を拒否した場合
- UnsupportedOperationException- 実装がこの操作をサポートしていない場合
 
- 
infoProcessHandle.Info info()プロセスに関する情報のスナップショットを返します。ProcessHandle.Infoインスタンスには、利用可能なプロセスに関する情報を返すアクセサ・メソッドがあります。- 戻り値:
- プロセスに関する情報のスナップショット。常に非null
 
- 
onExitCompletableFuture<ProcessHandle> onExit()プロセスの終了のためのCompletableFuture<ProcessHandle>を返します。CompletableFutureは、プロセスの終了時に同期または非同期に実行される可能性のある従属機能またはアクションをトリガーする機能を提供します。 プロセスが終了すると、CompletableFutureはプロセスの終了ステータスに関係なくcompletedになります。onExitメソッドは、プロセスが終了したときに独立したアクションを呼び出すために複数回呼び出すことができます。onExit().get()を呼び出すと、プロセスが終了するのを待ち、ProcessHandleを返します。 Futureは、プロセスが終了するかどうかを確認するために、プロセスがdoneかwaitかどうかを確認するために使用できます。 CompleteableFutureの取消しはプロセスに影響を与えません。- APIのノート:
- プロセスは、ComputableFutureが完了し、従属アクションが呼び出される前にisAlive()で終了したことが観察されることがあります。
- 戻り値:
- ProcessHandle用の新しいCompletableFuture<ProcessHandle>
- throws:
- IllegalStateException- プロセスが現在のプロセスである場合
 
- 
supportsNormalTerminationboolean supportsNormalTermination()destroy()の実装が正常にプロセスを終了する場合は、trueを返します。destroyの実装が強制的かつ即座にプロセスを終了する場合は、falseを返します。
- 
destroyboolean destroy()プロセスを強制終了するようにリクエストします。 このProcessHandleオブジェクトによって表されるプロセスがnormally terminatedであるかどうかは、実装に依存します。 強制的なプロセス破壊は、プロセスの即時終了として定義されますが、正常終了は、プロセスが正常に終了することを可能にします。 プロセスが生存していない場合、何も実行されません。 オペレーティング・システムのアクセス制御によって、プロセスが強制終了されないことがあります。プロセスが終了すると、 onExit()からのCompletableFutureはcompletedになります。ノート: プロセスはすぐに終了しないことがあります。 たとえば、 isAlive()は、destroy()が呼び出された後、短期間trueを返します。- 戻り値:
- 終了が正常にリクエストされた場合はtrue、そうでない場合はfalse
- throws:
- IllegalStateException- プロセスが現在のプロセスである場合
 
- 
destroyForciblyboolean destroyForcibly()プロセスを強制的に強制終了するようにリクエストします。 このProcessHandleオブジェクトによって表されるプロセスは、強制終了されます。 強制的なプロセス破壊は、プロセスの即時終了として定義されますが、正常終了は、プロセスが正常に終了することを可能にします。 プロセスが生存していない場合、何も実行されません。 オペレーティング・システムのアクセス制御によって、プロセスが強制終了されないことがあります。プロセスが終了すると、 onExit()からのCompletableFutureはcompletedになります。ノート: プロセスはすぐに終了しないことがあります。 たとえば、 isAlive()は、destroyForcibly()が呼び出された後、短期間trueを返します。- 戻り値:
- 終了が正常にリクエストされた場合はtrue、そうでない場合はfalse
- throws:
- IllegalStateException- プロセスが現在のプロセスである場合
 
- 
isAliveboolean isAlive()このProcessHandleが表すプロセスが生存しているかどうかをテストします。 プロセスの終了は実装とオペレーティング・システム固有です。 このプロセスは、PIDが有効である限り、生きているとみなされます。- 戻り値:
- このProcessHandleオブジェクトによって表されるプロセスがまだ終了していない場合はtrue
 
- 
hashCodeint hashCode()このProcessHandleのハッシュ・コード値を返します。 hashcode値は、Object.hashCode()の一般規約に従います。 値はpid()値の関数であり、プロセスを一意的に識別するための追加情報の関数である場合があります。equalsメソッドに従って2つのProcessHandleが等しい場合、2つのオブジェクトのそれぞれでhashCodeメソッドを呼び出すと、同じ整数結果が生成されなければなりません。
- 
equalsboolean equals(Object other) otherオブジェクトが非nullで、同じ実装であり、同じシステム・プロセスを表す場合は、trueを返します; それ以外の場合は、falseを返します。- オーバーライド:
- equals、クラス- Object
- 実装上のノート:
- 同じPIDを持つProcessHandleが同じシステム・プロセスを表すかどうかは実装固有です。 ProcessHandleの実装には、プロセスを一意に識別するための追加情報が含まれている必要があります。 例えば、プロセスの開始時間を使用して、PIDが再使用されたかどうかを判定することができます。 equalsの実装は、それらを区別する情報がない限り、同じPIDを持つ2つのProcessHandleのtrueを返すべきです。
- パラメータ:
- other- 別のオブジェクト
- 戻り値:
- true- otherオブジェクトがnullでない場合、同じ実装クラスであり、同じシステム・プロセスを表します。それ以外の場合は- falseを返します。
- 関連項目:
 
- 
compareToint compareTo(ProcessHandle other) このProcessHandleと指定したオーダーのProcessHandleを比較します。 順序は指定されていませんが、Object.equals(java.lang.Object)と一貫しています。これは、ProcessHandleの2つのインスタンスが同じ実装で、同じシステム・プロセスを表す場合にのみtrueを返します。 比較は、同じ実装のオブジェクト間でのみサポートされます。ProcessHandleの2つの異なる実装を相互に比較しようとすると、ClassCastExceptionがスローされます。- 定義:
- インタフェースComparable<ProcessHandle>内のcompareTo
- パラメータ:
- other- 比較されるProcessHandle
- 戻り値:
- このオブジェクトが指定されたオブジェクトより小さい場合は負の整数、等しい場合はゼロ、大きい場合は正の整数
- throws:
- NullPointerException- 指定されたオブジェクトがnullの場合
- ClassCastException- 指定されたオブジェクトがこのオブジェクトと同じクラスでない場合
 
 
-