ProcessBuilder Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Diese Klasse wird zum Erstellen von Betriebssystemprozessen verwendet.
[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
- Vererbung
- Attribute
Hinweise
Diese Klasse wird zum Erstellen von Betriebssystemprozessen verwendet.
Jede ProcessBuilder Instanz verwaltet eine Sammlung von Prozessattributen. Die #start() Methode erstellt eine neue Process Instanz mit diesen Attributen. Die #start() Methode kann wiederholt aus derselben Instanz aufgerufen werden, um neue Unterprozesse mit identischen oder verwandten Attributen zu erstellen.
Jeder Prozess-Generator verwaltet diese Prozessattribute:
<Ul>
<li>a command, a list of strings which signifiziert the external program file to be invoked and its arguments, if any. Welche Zeichenfolgenlisten einen gültigen Betriebssystembefehl darstellen, ist systemabhängig. Es ist z. B. üblich, dass jedes konzeptionelle Argument ein Element in dieser Liste ist, aber es gibt Betriebssysteme, in denen Programme erwartet werden, dass Befehlszeilenzeichenfolgen selbst tokenisiert werden . Für ein solches System kann eine Java Implementierung Befehle erfordern, genau zwei Elemente enthalten.
<li>an environment, which is a system-dependent mapping from variables to values. Der Anfangswert ist eine Kopie der Umgebung des aktuellen Prozesses (siehe System#getenv()).
<li>a working directory. Der Standardwert ist das aktuelle Arbeitsverzeichnis des aktuellen Prozesses, in der Regel das Verzeichnis, das von der Systemeigenschaft user.dirbenannt wird.
<li>"redirect-input">a source of <i>standard input</i>. Standardmäßig liest der Unterprozess Eingaben aus einer Pipe vor. Java Code kann über den von Process#getOutputStream()ihnen zurückgegebenen Ausgabedatenstrom auf diese Pipe zugreifen. Die Standardeingabe kann jedoch mithilfe einer #redirectInput(Redirect) redirectInputanderen Quelle umgeleitet werden. In diesem Fall Process#getOutputStream() wird ein NULL-Ausgabedatenstrom zurückgegeben, für den Folgendes gilt:
<ul>li die Methoden immer auslösen IOException<li>die OutputStream#close() close Methode macht nichts </ul OutputStream#write(int) write><>
<li>"redirect-output">a destination for <i>standard output</i> and <i>standard error</i>. Standardmäßig schreibt der Unterprozess Standardausgabe und Standardfehler in Rohre. Java Code kann über die von Process#getInputStream() und .Process#getErrorStream() Standardausgabe- und Standardfehler können jedoch an andere Ziele umgeleitet werden, die und #redirectOutput(Redirect) redirectOutput#redirectError(Redirect) redirectError. In diesem Fall Process#getInputStream() und/oder Process#getErrorStream() gibt einen NULL-Eingabedatenstrom zurück, für den Folgendes gilt:
<ul>li die Methoden geben immer -1<li zurück, die Methode gibt immer<0 li>zurück InputStream#available() availableInputStream#close() close, die>Methode macht nichts </ul InputStream#read() read><>
<li>a redirectErrorStream property. Zunächst lautet falsediese Eigenschaft , d. h., dass die Standardausgabe und Fehlerausgabe eines Unterauftrags an zwei separate Datenströme gesendet werden, auf die mithilfe der Process#getInputStream() methoden zugegriffen Process#getErrorStream() werden kann.
Wenn der Wert auf true", dann:
<ul><li>Standardfehler wird mit der Standardausgabe zusammengeführt und immer an dasselbe Ziel gesendet (dies erleichtert das Korrelieren von Fehlermeldungen mit der entsprechenden Ausgabe) <li>das gemeinsame Ziel des Standardfehlers und die Standardausgabe kann mit<#redirectOutput(Redirect) redirectOutput li>beliebiger Umleitung umgeleitet werden, die von der #redirectError(Redirect) redirectError Methode festgelegt wurde, wird ignoriert, wenn ein von der Methode zurückgegebener Teilprozess <>den zurückgegebenen Process#getErrorStream() Datenstrom immer ein NULL-Eingabedatenstrom</ul ist.>
</ul>
Das Ändern der Attribute eines Prozess-Generators wirkt sich auf Prozesse aus, die anschließend von der Methode dieses #start() Objekts gestartet wurden, sich jedoch nie auf zuvor gestartete Prozesse oder den Java Prozess selbst auswirken.
Die meisten Fehlerüberprüfungen werden von der #start() Methode ausgeführt. Es ist möglich, den Status eines Objekts so zu ändern, dass #start() ein Fehler auftritt. Wenn Sie z. B. das Befehlsattribute auf eine leere Liste festlegen, wird keine Ausnahme ausgelöst, es sei denn #start() , sie wird aufgerufen.
<strong>Note that this class is not synchronized.</strong> Wenn mehrere Threads gleichzeitig auf eine ProcessBuilder Instanz zugreifen und mindestens einer der Threads eines der Attribute strukturell ändert, muss sie extern synchronisiert werden.
Das Starten eines neuen Prozesses, der das Standardarbeitsverzeichnis und die Standardumgebung verwendet, ist einfach:
{@code
Process p = new ProcessBuilder("myCommand", "myArg").start();
}
Hier ist ein Beispiel, das einen Prozess mit einem geänderten Arbeitsverzeichnis und einer geänderten Umgebung startet und die Standardausgabe und den Fehler umleitet, die an eine Protokolldatei angefügt werden sollen:
{@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;
}
Um einen Prozess mit einer expliziten Gruppe von Umgebungsvariablen zu starten, rufen Sie zuerst auf java.util.Map#clear() Map.clear() , bevor Sie Umgebungsvariablen hinzufügen.
Hinzugefügt in 1.5.
Java Dokumentation für java.lang.ProcessBuilder.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Konstruktoren
| Name | Beschreibung |
|---|---|
| ProcessBuilder(IList<String>) |
Erstellt einen Prozess-Generator mit dem angegebenen Betriebssystemprogramm und den angegebenen Argumenten. |
| ProcessBuilder(String[]) |
Erstellt einen Prozess-Generator mit dem angegebenen Betriebssystemprogramm und den angegebenen Argumenten. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Class |
Gibt die Laufzeitklasse dieses Werts |
| Handle |
Das Handle für die zugrunde liegende Android-Instanz. (Geerbt von Object) |
| JniIdentityHashCode |
Diese Klasse wird zum Erstellen von Betriebssystemprozessen verwendet. (Geerbt von Object) |
| JniPeerMembers |
Diese Klasse wird zum Erstellen von Betriebssystemprozessen verwendet. |
| PeerReference |
Diese Klasse wird zum Erstellen von Betriebssystemprozessen verwendet. (Geerbt von Object) |
| ThresholdClass |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. (Geerbt von Object) |
| ThresholdType |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. (Geerbt von Object) |
Methoden
| Name | Beschreibung |
|---|---|
| Clone() |
Erstellt und gibt eine Kopie dieses Objekts zurück. (Geerbt von Object) |
| Command() |
Gibt das Betriebssystemprogramm und die Argumente des Prozess-Generators zurück. |
| Command(IList<String>) |
Legt das Betriebssystemprogramm und die Argumente des Prozess-Generators fest. |
| Command(String[]) |
Gibt das Betriebssystemprogramm und die Argumente des Prozess-Generators zurück. |
| Directory() |
Gibt das Arbeitsverzeichnis dieses Prozess-Generators zurück. |
| Directory(File) |
Legt das Arbeitsverzeichnis dieses Prozess-Generators fest. |
| Dispose() |
Diese Klasse wird zum Erstellen von Betriebssystemprozessen verwendet. (Geerbt von Object) |
| Dispose(Boolean) |
Diese Klasse wird zum Erstellen von Betriebssystemprozessen verwendet. (Geerbt von Object) |
| Environment() |
Gibt eine Zeichenfolgenzuordnungsansicht der Umgebung dieses Prozess-Generators zurück. |
| Equals(Object) |
Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist. (Geerbt von Object) |
| GetHashCode() |
Gibt einen Hashcodewert für das Objekt zurück. (Geerbt von Object) |
| InheritIO() |
Legt die Quelle und das Ziel für die Standard-E/A des Unterprozesss auf die gleiche Weise wie die des aktuellen Java Prozesses fest. |
| JavaFinalize() |
Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind. (Geerbt von Object) |
| Notify() |
Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet. (Geerbt von Object) |
| NotifyAll() |
Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten. (Geerbt von Object) |
| RedirectError() |
Gibt das Standardfehlerziel dieses Prozess-Generators zurück. |
| RedirectError(File) |
Legt das Standardfehlerziel dieses Prozess-Generators auf eine Datei fest. |
| RedirectError(ProcessBuilder+Redirect) |
Gibt das Standardfehlerziel dieses Prozess-Generators zurück. |
| RedirectErrorStream() |
Gibt an, ob dieser Prozess-Generator Standardfehler und Standardausgabe zusammenführt. |
| RedirectErrorStream(Boolean) |
Legt die Eigenschaft dieses Prozess-Generators |
| RedirectInput() |
Gibt die Standardeingabequelle dieses Prozess-Generators zurück. |
| RedirectInput(File) |
Legt die Standardeingabequelle dieses Prozess-Generators auf eine Datei fest. |
| RedirectInput(ProcessBuilder+Redirect) |
Gibt die Standardeingabequelle dieses Prozess-Generators zurück. |
| RedirectOutput() |
Gibt das Standardausgabeziel dieses Prozess-Generators zurück. |
| RedirectOutput(File) |
Legt das Standardausgabeziel dieses Prozess-Generators auf eine Datei fest. |
| RedirectOutput(ProcessBuilder+Redirect) |
Gibt das Standardausgabeziel dieses Prozess-Generators zurück. |
| SetHandle(IntPtr, JniHandleOwnership) |
Legt die Handle-Eigenschaft fest. (Geerbt von Object) |
| Start() |
Startet einen neuen Prozess mithilfe der Attribute dieses Prozess-Generators. |
| ToArray<T>() |
Diese Klasse wird zum Erstellen von Betriebssystemprozessen verwendet. (Geerbt von Object) |
| ToString() |
Gibt eine Zeichenfolgendarstellung des Objekts zurück. (Geerbt von Object) |
| UnregisterFromRuntime() |
Diese Klasse wird zum Erstellen von Betriebssystemprozessen verwendet. (Geerbt von Object) |
| Wait() |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em< oder >em<unterbrochen>/em<.><> (Geerbt von Object) |
| Wait(Int64, Int32) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
| Wait(Int64) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| IJavaPeerable.Disposed() |
Diese Klasse wird zum Erstellen von Betriebssystemprozessen verwendet. (Geerbt von Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
Diese Klasse wird zum Erstellen von Betriebssystemprozessen verwendet. (Geerbt von Object) |
| IJavaPeerable.Finalized() |
Diese Klasse wird zum Erstellen von Betriebssystemprozessen verwendet. (Geerbt von Object) |
| IJavaPeerable.JniManagedPeerState |
Diese Klasse wird zum Erstellen von Betriebssystemprozessen verwendet. (Geerbt von Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Diese Klasse wird zum Erstellen von Betriebssystemprozessen verwendet. (Geerbt von Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Diese Klasse wird zum Erstellen von Betriebssystemprozessen verwendet. (Geerbt von Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Diese Klasse wird zum Erstellen von Betriebssystemprozessen verwendet. (Geerbt von Object) |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ruft den JNI-Namen des Typs der Instanz |
| JavaAs<TResult>(IJavaPeerable) |
Versuchen Sie, die Eingabe |
| JavaCast<TResult>(IJavaObject) |
Führt eine android-laufzeitgecheckte Typkonvertierung aus. |
| JavaCast<TResult>(IJavaObject) |
Diese Klasse wird zum Erstellen von Betriebssystemprozessen verwendet. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Versuchen Sie, die Eingabe |