ProcessBuilder クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
このクラスは、オペレーティング システム プロセスを作成するために使用されます。
[Android.Runtime.Register("java/lang/ProcessBuilder", DoNotGenerateAcw=true)]
public sealed class ProcessBuilder : Java.Lang.Object
[<Android.Runtime.Register("java/lang/ProcessBuilder", DoNotGenerateAcw=true)>]
type ProcessBuilder = class
inherit Object
- 継承
- 属性
注釈
このクラスは、オペレーティング システム プロセスを作成するために使用されます。
各 ProcessBuilder インスタンスは、プロセス属性のコレクションを管理します。
#start() メソッドは、これらの属性を持つ新しいProcess インスタンスを作成します。 同じインスタンスから #start() メソッドを繰り返し呼び出して、同じ属性または関連属性を持つ新しいサブプロセスを作成できます。
各プロセス ビルダーは、次のプロセス属性を管理します。
<ul>
<li>a コマンド。呼び出される外部プログラム ファイルとその引数 (存在する場合) を示す文字列の一覧。 有効なオペレーティング システム コマンドを表す文字列リストは、システムに依存します。 たとえば、各概念引数がこの一覧の要素であることが一般的ですが、プログラムがコマンド ライン文字列自体をトークン化することが期待されるオペレーティング システムがあります。このようなシステムでは、Javaの実装では、コマンドに 2 つの要素を含める必要があります。
<li>an 環境。これは、 変数 から 値へのシステム依存のマッピングです。 初期値は、現在のプロセスの環境のコピーです ( System#getenv()を参照)。
<li>a 作業ディレクトリ。 既定値は、現在のプロセスの現在の作業ディレクトリです。通常は、システム プロパティ user.dirによって名前が付けられたディレクトリです。
<li>"redirect-input">a source of <i>standard input</i>. 既定では、サブプロセスはパイプから入力を読み取ります。 Javaコードは、Process#getOutputStream()によって返される出力ストリームを介してこのパイプにアクセスできます。 ただし、標準入力は、 #redirectInput(Redirect) redirectInputを使用して別のソースにリダイレクトされる可能性があります。 この場合、 Process#getOutputStream() は null 出力ストリームを返します。その対象は次のとおりです。
<ul><li>OutputStream#write(int) writeメソッドは常にIOException<liをスローします>OutputStream#close() closeメソッドは</ulを何もしません>
<li>"redirect-output">a destination for <i>standard output</i> and <i>standard error</i>. 既定では、サブプロセスは標準出力と標準エラーをパイプに書き込みます。 Javaコードは、Process#getInputStream()とProcess#getErrorStream()によって返される入力ストリームを介してこれらのパイプにアクセスできます。 ただし、標準出力と標準エラーは、 #redirectOutput(Redirect) redirectOutput と #redirectError(Redirect) redirectErrorを使用して他の宛先にリダイレクトされる可能性があります。 この場合、 Process#getInputStream() や Process#getErrorStream() は null 入力ストリームを返します。このストリームの対象は次のとおりです。
<ul><li>InputStream#read() readメソッドは常に-1<liを返します>InputStream#available() availableメソッドは常に0<liを返します>InputStream#close() closeメソッドは</ulを返しません>
<li>a redirectErrorStream プロパティ。 最初は、このプロパティは falseです。つまり、サブプロセスの標準出力とエラー出力は、 Process#getInputStream() メソッドと Process#getErrorStream() メソッドを使用してアクセスできる 2 つの個別のストリームに送信されます。
値が true に設定されている場合は、次のようになります。
<ul><li>標準エラーは標準出力とマージされ、常に同じ宛先に送信されます(これにより、エラー メッセージを対応する出力と関連付けるのが簡単になります)<li>標準エラーと標準出力の共通の宛先をリダイレクトできます #redirectOutput(Redirect) redirectOutput<li>サブプロセス #redirectError(Redirect) redirectErrorli を作成するときに、< メソッドによって設定されたリダイレクトは無視されます>Process#getErrorStream()から返されるストリームは常に null 入力ストリームになります</ul>
</ul>
プロセス ビルダーの属性を変更すると、そのオブジェクトの #start() メソッドによって開始されたプロセスに影響しますが、以前に開始されたプロセスやJava プロセス自体には影響しません。
ほとんどのエラー チェックは、 #start() メソッドによって実行されます。 オブジェクトの状態を変更して、 #start() が失敗するようにすることができます。 たとえば、コマンド属性を空のリストに設定すると、 #start() が呼び出されない限り、例外はスローされません。
<strong>このクラスが同期されていないことを確認します。</strong> 複数のスレッドが同時に ProcessBuilder インスタンスにアクセスし、少なくとも 1 つのスレッドが属性の 1 つを構造的に変更する場合は、外部で同期する 必要があります 。
既定の作業ディレクトリと環境を使用する新しいプロセスの開始は簡単です。
{@code
Process p = new ProcessBuilder("myCommand", "myArg").start();
}
変更された作業ディレクトリと環境でプロセスを開始し、標準出力とエラーをログ ファイルに追加するようにリダイレクトする例を次に示します。
{@code
ProcessBuilder pb =
new ProcessBuilder("myCommand", "myArg1", "myArg2");
Map<String, String> env = pb.environment();
env.put("VAR1", "myValue");
env.remove("OTHERVAR");
env.put("VAR2", env.get("VAR1") + "suffix");
pb.directory(new File("myDir"));
File log = new File("log");
pb.redirectErrorStream(true);
pb.redirectOutput(Redirect.appendTo(log));
Process p = pb.start();
assert pb.redirectInput() == Redirect.PIPE;
assert pb.redirectOutput().file() == log;
assert p.getInputStream().read() == -1;
}
環境変数の明示的なセットでプロセスを開始するには、最初に環境変数を追加する前に java.util.Map#clear() Map.clear() を呼び出します。
1\.5 で追加されました。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
コンストラクター
| 名前 | 説明 |
|---|---|
| ProcessBuilder(IList<String>) |
指定したオペレーティング システム プログラムと引数を使用してプロセス ビルダーを構築します。 |
| ProcessBuilder(String[]) |
指定したオペレーティング システム プログラムと引数を使用してプロセス ビルダーを構築します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| Class |
この |
| Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
| JniIdentityHashCode |
相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。 (継承元 Object) |
| JniManagedPeerState |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 JavaObject) |
| JniPeerMembers |
このJava ピアのメンバーを呼び出すために使用される JNI メタデータを取得します。 |
| PeerReference |
このJava ピアの JNI オブジェクト参照を取得します。 (継承元 Object) |
| ThresholdClass |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 (継承元 Object) |
| ThresholdType |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 (継承元 Object) |
メソッド
| 名前 | 説明 |
|---|---|
| Clone() |
このオブジェクトのコピーを作成して返します。 (継承元 Object) |
| Command() |
このプロセス ビルダーのオペレーティング システム プログラムと引数を返します。 |
| Command(IList<String>) |
このプロセス ビルダーのオペレーティング システム プログラムと引数を設定します。 |
| Command(String[]) |
このプロセス ビルダーのオペレーティング システム プログラムと引数を返します。 |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 JavaObject) |
| Directory() |
このプロセス ビルダーの作業ディレクトリを返します。 |
| Directory(File) |
このプロセス ビルダーの作業ディレクトリを設定します。 |
| Dispose() |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| Dispose(Boolean) |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| DisposeUnlessReferenced() |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 JavaObject) |
| Environment() |
このプロセス ビルダーの環境の文字列マップ ビューを返します。 |
| Equals(Object) |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 JavaObject) |
| Equals(Object) |
他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。 (継承元 Object) |
| GetHashCode() |
オブジェクトのハッシュ コード値を返します。 (継承元 Object) |
| InheritIO() |
サブプロセス標準 I/O のソースと宛先を、現在のJava プロセスと同じに設定します。 |
| JavaFinalize() |
古い.
オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。 (継承元 Object) |
| Notify() |
このオブジェクトのモニターで待機している 1 つのスレッドを起動します。 (継承元 Object) |
| NotifyAll() |
このオブジェクトのモニターで待機しているすべてのスレッドを起動します。 (継承元 Object) |
| RedirectError() |
このプロセス ビルダーの標準エラー出力先を返します。 |
| RedirectError(File) |
このプロセス ビルダーの標準エラー出力先をファイルに設定します。 |
| RedirectError(ProcessBuilder+Redirect) |
このプロセス ビルダーの標準エラー先を設定します。 |
| RedirectErrorStream() |
このプロセス ビルダーが標準エラーと標準出力をマージするかどうかを示します。 |
| RedirectErrorStream(Boolean) |
このプロセス ビルダーの |
| RedirectInput() |
このプロセス ビルダーの標準入力ソースを返します。 |
| RedirectInput(File) |
このプロセス ビルダーの標準入力ソースをファイルに設定します。 |
| RedirectInput(ProcessBuilder+Redirect) |
このプロセス ビルダーの標準入力ソースを設定します。 |
| RedirectOutput() |
このプロセス ビルダーの標準出力先を返します。 |
| RedirectOutput(File) |
このプロセス ビルダーの標準出力先をファイルに設定します。 |
| RedirectOutput(ProcessBuilder+Redirect) |
このプロセス ビルダーの標準出力先を設定します。 |
| SetHandle(IntPtr, JniHandleOwnership) |
Handle プロパティを設定します。 (継承元 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 JavaObject) |
| Start() |
このプロセス ビルダーの属性を使用して、新しいプロセスを開始します。 |
| ToArray<T>() |
このJava配列ラッパーからマネージド配列を作成します。 (継承元 Object) |
| ToString() |
オブジェクトの文字列形式を返します。 (継承元 Object) |
| UnregisterFromRuntime() |
相互運用ランタイムからこのJava ピアの登録を解除します。 (継承元 Object) |
| Wait() |
現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。 (継承元 Object) |
| Wait(Int64, Int32) |
現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。 (継承元 Object) |
| Wait(Int64) |
現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。 (継承元 Object) |
明示的なインターフェイスの実装
| 名前 | 説明 |
|---|---|
| IJavaPeerable.Disposed() |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 JavaObject) |
| IJavaPeerable.Finalized() |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 JavaObject) |
拡張メソッド
| 名前 | 説明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
インスタンス |
| JavaAs<TResult>(IJavaPeerable) |
|
| JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
| JavaCast<TResult>(IJavaObject) |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
|