- すべてのスーパー・インタフェース:
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()
プロセスの現在の直接の子のスナップショットを返します。int
compareTo
(ProcessHandle other) このProcessHandleを、指定されたProcessHandleと順序を比較します。static ProcessHandle
current()
現在のプロセスのProcessHandleを返します。プロセスの子孫のスナップショットを返します。boolean
destroy()
プロセスを強制終了するようにリクエストします。boolean
プロセスを強制的に強制終了するようにリクエストします。boolean
other
オブジェクトがnull以外で、実装が同じで、同じシステム・プロセスを表す場合はtrue
を戻し、それ以外の場合はfalse
を戻します。int
hashCode()
このProcessHandleのハッシュ・コード値を返します。info()
プロセスに関する情報のスナップショットを返します。boolean
isAlive()
このProcessHandle
によって表されるプロセスが動作しているかどうかをテストします。static Optional
<ProcessHandle> of
(long pid) 既存のネイティブ・プロセスのOptional<ProcessHandle>
を返します。onExit()
プロセスの終了についてCompletableFuture<ProcessHandle>
を返します。parent()
親プロセスのOptional<ProcessHandle>
を返します。long
pid()
プロセスのネイティブ・プロセスIDを返します。boolean
destroy()
の実装が通常プロセスを終了する場合は、true
を返します。
-
メソッドの詳細
-
pid
long pid()プロセスのネイティブ・プロセスIDを返します。 ネイティブ・プロセスIDは、オペレーティング・システムがプロセスに割り当てる識別番号です。 オペレーティング・システムは、プロセスの終了後にプロセスIDを再利用できます。 ProcessHandlesを比較するには、equals
またはcompareTo
を使用します。- 戻り値:
- プロセスのネイティブ・プロセスID
- 例外:
UnsupportedOperationException
- 実装がこの操作をサポートしていない場合
-
of
static Optional<ProcessHandle> of(long pid) 既存のネイティブ・プロセスのOptional<ProcessHandle>
を返します。- パラメータ:
pid
- ネイティブ・プロセスID- 戻り値:
- プロセスのPIDの
Optional<ProcessHandle>
。プロセスが存在しない場合、Optional
は空です。 - 例外:
SecurityException
- セキュリティ・マネージャがインストールされていて、RuntimePermission("manageProcess")を拒否した場合UnsupportedOperationException
- 実装がこの操作をサポートしていない場合
-
current
static ProcessHandle current()現在のプロセスのProcessHandleを返します。 ProcessHandleは現在のプロセスの破棄には使用できません。かわりにSystem.exit
を使用してください。- 戻り値:
- 現在のプロセスのProcessHandle
- 例外:
SecurityException
- セキュリティ・マネージャがインストールされていて、RuntimePermission("manageProcess")を拒否した場合UnsupportedOperationException
- 実装がこの操作をサポートしていない場合
-
parent
Optional<ProcessHandle> parent()親プロセスのOptional<ProcessHandle>
を返します。 ゾンビ状態のプロセスは、通常、親を持たないことに注意してください。- 戻り値:
- 親プロセスの
Optional<ProcessHandle>
。Optional
は、子プロセスに親がない場合、または親が使用できない場合は、オペレーティング・システムの制限が原因で空になります - 例外:
SecurityException
- セキュリティ・マネージャがインストールされていて、RuntimePermission("manageProcess")を拒否した場合
-
children
Stream<ProcessHandle> children()プロセスの現在の直接の子のスナップショットを返します。 直接の子プロセスのparent()
がプロセスです。 通常、not alive
のプロセスは子を持ちません。プロセスが作成され、非同期で終了するNote。 プロセスが
alive
である保証はありません。- 戻り値:
- プロセスの直接の子プロセスであるプロセスの一連のProcessHandle
- 例外:
SecurityException
- セキュリティ・マネージャがインストールされていて、RuntimePermission("manageProcess")を拒否した場合
-
descendants
Stream<ProcessHandle> descendants()プロセスの子孫のスナップショットを返します。 プロセスの子孫は、プロセスの子とそれらの子の子孫です。 通常、not alive
のプロセスは子を持ちません。プロセスが作成され、非同期で終了するNote。 プロセスが
alive
である保証はありません。- 戻り値:
- プロセスの子孫であるプロセスのProcessHandlesの連続ストリーム
- 例外:
SecurityException
- セキュリティ・マネージャがインストールされていて、RuntimePermission("manageProcess")を拒否した場合
-
allProcesses
static Stream<ProcessHandle> allProcesses()現在のプロセスに表示されるすべてのプロセスのスナップショットを返します。プロセスが作成され、非同期で終了するNote。 ストリーム内のプロセスが動作していること、またはスナップショットの開始以降に他のプロセスが作成されていないという保証はありません。
- 戻り値:
- すべてのプロセスのProcessHandleのストリーム
- 例外:
SecurityException
- セキュリティ・マネージャがインストールされていて、RuntimePermission("manageProcess")を拒否した場合UnsupportedOperationException
- 実装がこの操作をサポートしていない場合
-
info
ProcessHandle.Info info()プロセスに関する情報のスナップショットを返します。ProcessHandle.Info
インスタンスには、プロセスに関する情報(使用可能な場合)を返すアクセサ・メソッドがあります。- 戻り値:
- プロセスに関する情報のスナップショット(常にnull以外)
-
onExit
CompletableFuture<ProcessHandle> onExit()プロセスの終了についてCompletableFuture<ProcessHandle>
を返します。CompletableFuture
は、プロセスの終了時に同期または非同期に実行できる依存ファンクションまたはアクションをトリガーする機能を提供します。 プロセスが終了すると、プロセスの終了ステータスに関係なく、CompletableFutureはcompleted
になります。onExit
メソッドを複数回呼び出して、プロセスの終了時に独立したアクションを呼び出すことができます。onExit().get()
をコールすると、プロセスが終了するまで待機し、ProcessHandleが返されます。 将来は、プロセスがdone
かwait
かをチェックして終了するために使用できます。 CompleteableFutureのCancelling
はプロセスに影響しません。- APIのノート:
- ComputableFutureが完了して依存アクションが起動される前に、プロセスが
isAlive()
で終了していることがわかります。 - 戻り値:
- ProcessHandle用の新しい
CompletableFuture<ProcessHandle>
- 例外:
IllegalStateException
- プロセスが現在のプロセスである場合
-
supportsNormalTermination
-
destroy
boolean destroy()プロセスを強制終了するようにリクエストします。 このProcessHandle
オブジェクトによって表されるプロセスがnormally terminated
かどうかは、実装に依存します。 強制的なプロセス破棄は、プロセスの即時終了として定義されますが、通常終了では、プロセスは正常に停止できます。 プロセスが動作していない場合、アクションは実行されません。 オペレーティング・システムのアクセス制御によって、プロセスが強制終了されない場合があります。プロセスが終了すると、
onExit()
のCompletableFuture
はcompleted
になります。ノート: プロセスはすぐには終了できません。 たとえば、
isAlive()
は、destroy()
がコールされた後の短い期間に対してtrueを返す場合があります。- 戻り値:
- 終了が正常にリクエストされた場合は
true
、それ以外の場合はfalse
- 例外:
IllegalStateException
- プロセスが現在のプロセスである場合
-
destroyForcibly
boolean destroyForcibly()プロセスを強制的に強制終了するようにリクエストします。 このProcessHandle
オブジェクトで表されるプロセスは強制的に終了します。 強制的なプロセス破棄は、プロセスの即時終了として定義されますが、通常終了では、プロセスは正常に停止できます。 プロセスが動作していない場合、アクションは実行されません。 オペレーティング・システムのアクセス制御によって、プロセスが強制終了されない場合があります。プロセスが終了すると、
onExit()
のCompletableFuture
はcompleted
になります。ノート: プロセスはすぐには終了できません。 たとえば、
isAlive()
は、destroyForcibly()
がコールされた後の短い期間に対してtrueを返す場合があります。- 戻り値:
- 終了が正常にリクエストされた場合は
true
、それ以外の場合はfalse
- 例外:
IllegalStateException
- プロセスが現在のプロセスである場合
-
isAlive
boolean isAlive()このProcessHandle
によって表されるプロセスが動作しているかどうかをテストします。 プロセスの終了は、実装およびオペレーティング・システム固有です。 プロセスは、PIDが有効であるかぎり、存続中とみなされます。- 戻り値:
- この
ProcessHandle
オブジェクトによって表されるプロセスがまだ終了していない場合はtrue
-
hashCode
int hashCode()このProcessHandleのハッシュ・コード値を返します。 hashcode値は、Object.hashCode()
の一般規約に従います。 この値は、pid()
値の関数であり、プロセスを一意に識別するための追加情報の関数である場合があります。 2つのProcessHandlesがequals
メソッドに従って等しい場合、2つのオブジェクトのそれぞれでhashCodeメソッドをコールすると、同じ整数の結果が生成される必要があります。 -
equals
boolean equals(Object other) other
オブジェクトがnull以外で、実装が同じで、同じシステム・プロセスを表す場合はtrue
を戻し、それ以外の場合はfalse
を戻します。- オーバーライド:
equals
、クラスObject
- 実装上のノート:
- 同じPIDを持つProcessHandlesが同じシステム・プロセスを表すかどうかは、実装固有です。 ProcessHandle実装には、プロセスを一意に識別するための追加情報が含まれている必要があります。 たとえば、プロセスの開始時間を使用して、PIDが再使用されたかどうかを判断できます。
equals
の実装は、区別する情報がないかぎり、同じPIDを持つ2つのProcessHandlesに対してtrue
を返す必要があります。 - パラメータ:
other
- 別のオブジェクト- 戻り値:
other
オブジェクトがnullでない場合、true
は、同じ実装クラスに属し、同じシステム・プロセスを表します。それ以外の場合は、false
を返します- 関連項目:
-
compareTo
int compareTo(ProcessHandle other) このProcessHandleを、指定されたProcessHandleと順序を比較します。 順序は指定されませんが、Object.equals(java.lang.Object)
と一致します。これは、ProcessHandleの2つのインスタンスが同じ実装で、同じシステム・プロセスを表す場合にのみtrue
を返します。 比較は、同じ実装のオブジェクト間でのみサポートされます。ProcessHandle
の2つの異なる実装を相互に比較しようとすると、ClassCastException
がスローされます。- 定義:
- インタフェース
Comparable<ProcessHandle>
内のcompareTo
- パラメータ:
other
- 比較されるProcessHandle- 戻り値:
- このオブジェクトが指定されたオブジェクトより小さい場合は負の整数、等しい場合はゼロ、大きい場合は正の整数
- 例外:
NullPointerException
- 指定されたオブジェクトがnullの場合ClassCastException
- 指定されたオブジェクトがこのオブジェクトと同じクラスでない場合
-