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>環境。これは、 変数 から 値へのシステム依存のマッピングです。 初期値は、現在のプロセスの環境のコピーです (を参照)。System#getenv()
<作業>ディレクトリを作成 します。 既定値は、現在のプロセスの現在の作業ディレクトリです。通常は、システム プロパティ 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
常に li>をスロー<IOException
し、OutputStream#close() close
メソッドは何も </ul を実行しません>
<li>"redirect-output">a destination for <i>standard output</i and <i>> standard error</i>. 既定では、サブプロセスは標準出力と標準エラーをパイプに書き込みます。 Java コードは、 と Process#getErrorStream()
によってProcess#getInputStream()
返される入力ストリームを使用して、これらのパイプにアクセスできます。 ただし、標準出力と標準エラーは、 と #redirectError(Redirect) redirectError
を使用して#redirectOutput(Redirect) redirectOutput
他の宛先にリダイレクトされる場合があります。 この場合、 Process#getInputStream()
および/または Process#getErrorStream()
は null 入力ストリームを返します。その対象は次のとおりです。
<ul><li>メソッドはInputStream#read() read
常に li>を返-1
<し、InputStream#available() available
メソッドは常に li>を返し0
<、InputStream#close() close
メソッドは何も </ul を実行しません>
<li>a redirectErrorStream プロパティ。 最初は、このプロパティは ですfalse
。つまり、サブプロセスの標準出力とエラー出力は、 メソッドと Process#getErrorStream()
メソッドを使用してアクセスできる 2 つの別々のストリームにProcess#getInputStream()
送信されます。
値が に true
設定されている場合は、次のようになります。
<ul><li>標準エラーは標準出力とマージされ、常に同じ宛先に送信されます (これにより、エラー メッセージを対応する出力と関連付けるのが容易になります)。<>標準エラーの共通の宛先は li>を使用してリダイレクトでき、メソッドによって#redirectError(Redirect) redirectError
設定されたリダイレクトを使用して#redirectOutput(Redirect) redirectOutput
<標準出力をリダイレクトできます。サブプロセス<を>Process#getErrorStream()
<作成する場合は無視されます。>
</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 で追加されました。
の java.lang.ProcessBuilder
Java ドキュメント。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。
コンストラクター
ProcessBuilder(IList<String>) |
指定したオペレーティング システム プログラムと引数を使用してプロセス ビルダーを構築します。 |
ProcessBuilder(String[]) |
指定したオペレーティング システム プログラムと引数を使用してプロセス ビルダーを構築します。 |
プロパティ
Class |
この |
Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
JniIdentityHashCode |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 Object) |
JniPeerMembers |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 |
PeerReference |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 Object) |
ThresholdClass |
この API は Mono for Android インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 (継承元 Object) |
ThresholdType |
この API は Mono for Android インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 (継承元 Object) |
メソッド
Clone() |
このオブジェクトのコピーを作成して返します。 (継承元 Object) |
Command() |
このプロセス ビルダーのオペレーティング システム プログラムと引数を返します。 |
Command(IList<String>) |
このプロセス ビルダーのオペレーティング システム プログラムと引数を設定します。 |
Command(String[]) |
このプロセス ビルダーのオペレーティング システム プログラムと引数を返します。 |
Directory() |
このプロセス ビルダーの作業ディレクトリを返します。 |
Directory(File) |
このプロセス ビルダーの作業ディレクトリを設定します。 |
Dispose() |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 Object) |
Dispose(Boolean) |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 Object) |
Environment() |
このプロセス ビルダーの環境の文字列マップ ビューを返します。 |
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) |
Start() |
このプロセス ビルダーの属性を使用して、新しいプロセスを開始します。 |
ToArray<T>() |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 Object) |
ToString() |
オブジェクトの文字列形式を返します。 (継承元 Object) |
UnregisterFromRuntime() |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 Object) |
Wait() |
現在のスレッドが起動するまで待機します。通常<は、通知</em> または>< em 中断</em によって待機します>。> (継承元 Object) |
Wait(Int64) |
現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。 (継承元 Object) |
Wait(Int64, Int32) |
現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。 (継承元 Object) |
明示的なインターフェイスの実装
IJavaPeerable.Disposed() |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 Object) |
IJavaPeerable.DisposeUnlessReferenced() |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 Object) |
IJavaPeerable.Finalized() |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 Object) |
IJavaPeerable.JniManagedPeerState |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 (継承元 Object) |
拡張メソッド
JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
JavaCast<TResult>(IJavaObject) |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 |
GetJniTypeName(IJavaPeerable) |
このクラスは、オペレーティング システム プロセスを作成するために使用されます。 |