public abstract class Process extends Object
ProcessBuilder.start() メソッドや Runtime.exec メソッドはネイティブのプロセスを作成し、Process のサブクラスのインスタンスを返しますが、これを使えば、そのプロセスを制御したり情報を取得したりできます。Process クラスは、プロセスからの入力、プロセスへの出力、プロセス完了の待機、プロセス終了状態の確認、およびプロセスの破棄 (終了) を実行するための各メソッドを提供します。
たとえば、ネイティブなウィンドウ処理プロセス、デーモンプロセス、Microsoft Windows 環境での Win16/DOS プロセス、あるいはシェルスクリプトといったプロセスです。
デフォルトでは、作成されたサブプロセスは、自身の端末またはコンソールを持ちません。その標準入出力 (つまり標準入力、標準出力、標準エラー) の処理はすべて親プロセスにリダイレクトされますが、それらの情報にアクセスするには、メソッド getOutputStream()、getInputStream()、および getErrorStream() を使って取得されるストリームを使用します。親プロセスはこれらのストリームを使って、サブプロセスに入力を送ったり、サブプロセスからの出力を取得したりします。ネイティブなプラットフォームには標準入出力ストリームに使うバッファーのサイズが限られるものもあるので、サブプロセスの入力ストリームの書き込みあるいはストリーム出力の読み込みが失敗した場合、サブプロセスはブロックされるか、デッドロック状態になる可能性があります。
必要に応じて、ProcessBuilder クラスのメソッドを使ってサブプロセスの入出力のリダイレクトを行うこともできます。
Process オブジェクトへの参照がなくなった場合でも、サブプロセスは終了されず、非同期的に実行を続けます。
Process オブジェクトが表すプロセスの実行については、Process オブジェクトを所有する Java プロセスと非同期でなかったり、並行でなかったりしてもかまいません。
1.5 以降で Process を作成するための推奨の方法は、ProcessBuilder.start() です。
| コンストラクタと説明 |
|---|
Process() |
| 修飾子と型 | メソッドと説明 |
|---|---|
abstract void |
destroy()
サブプロセスを終了します。
|
abstract int |
exitValue()
サブプロセスの終了コードを返します。
|
abstract InputStream |
getErrorStream()
サブプロセスのエラー出力に接続された入力ストリームを返します。
|
abstract InputStream |
getInputStream()
サブプロセスの通常の出力に接続された入力ストリームを返します。
|
abstract OutputStream |
getOutputStream()
サブプロセスの通常の入力に接続された出力ストリームを返します。
|
abstract int |
waitFor()
必要な場合に、この
Process オブジェクトが表すプロセスが終了するまで現在のスレッドを待機させます。 |
public abstract OutputStream getOutputStream()
Process オブジェクトが表すプロセスの標準入力に渡されます。
ProcessBuilder.redirectInput を使ってサブプロセスの標準入力をリダイレクトした場合、このメソッドからは null 出力ストリームが返されます。
実装にあたっての注意:返される出力ストリームのバッファー処理をお勧めします。
public abstract InputStream getInputStream()
Process オブジェクトが表すプロセスの標準出力から渡されたデータを取得します。
ProcessBuilder.redirectOutput を使ってサブプロセスの標準出力をリダイレクトした場合、このメソッドからは null 入力ストリームが返されます。
それ以外の場合、ProcessBuilder.redirectErrorStream を使ってサブプロセスの標準エラーをリダイレクトした場合、このメソッドから返される入力ストリームは、サブプロセスの標準出力と標準エラーがマージされたものを受け取ります。
実装にあたっての注意:返される入力ストリームのバッファー処理をお勧めします。
public abstract InputStream getErrorStream()
Process オブジェクトが表すプロセスのエラー出力から渡されたデータを取得します。
ProcessBuilder.redirectError または ProcessBuilder.redirectErrorStream を使ってサブプロセスの標準エラーをリダイレクトした場合、このメソッドからは null 入力ストリームが返されます。
実装にあたっての注意:返される入力ストリームのバッファー処理をお勧めします。
public abstract int waitFor()
throws InterruptedException
Process オブジェクトが表すプロセスが終了するまで現在のスレッドを待機させます。サブプロセスがすでに終了している場合、このメソッドはただちに復帰します。サブプロセスが終了していない場合、呼び出し側スレッドはサブプロセスが終了するまでブロックされます。Process オブジェクトが表すサブプロセスの終了コード。0 は正常終了を示す。InterruptedException - 現在のスレッドが待機中にほかのスレッドによって割り込まれた場合、待機を終了して InterruptedException がスローされる。public abstract int exitValue()
Process オブジェクトが表すサブプロセスの終了コード。0 は正常終了を示す。IllegalThreadStateException - この Process オブジェクトが表すサブプロセスがまだ終了していない場合public abstract void destroy()
Process オブジェクトが表すサブプロセスは強制終了されます。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.