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 verwendet, um Betriebssystemprozesse zu erstellen.
[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 verwendet, um Betriebssystemprozesse zu erstellen.
Jede ProcessBuilder
instance verwaltet eine Auflistung von Prozessattributen. Die #start()
-Methode erstellt eine neue Process
instance mit diesen Attributen. Die #start()
Methode kann wiederholt aus demselben instance aufgerufen werden, um neue Unterprozesse mit identischen oder verwandten Attributen zu erstellen.
Jeder Prozess-Generator verwaltet diese Prozessattribute:
<ul>
<Li>a Command, eine Liste von Zeichenfolgen, die die externe Programmdatei, die aufgerufen werden soll, und deren Argumente, falls vorhanden, kennzeichnet. 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, bei denen von Programmen erwartet wird, dass sie Befehlszeilenzeichenfolgen selbst tokenisieren. Auf einem solchen System erfordert eine Java-Implementierung möglicherweise Befehle, die genau zwei Elemente enthalten.
<Eine>Umgebung, bei der es sich um eine systemabhängige Zuordnung von Variablen zu Werten handelt. Der Anfangswert ist eine Kopie der Umgebung des aktuellen Prozesses (siehe System#getenv()
).
<Ein>Arbeitsverzeichnis. Der Standardwert ist das aktuelle Arbeitsverzeichnis des aktuellen Prozesses, in der Regel das Von der Systemeigenschaft user.dir
benannte Verzeichnis.
<li>"redirect-input">a source of <i>standard input</i>. Standardmäßig liest der Unterprozess Eingaben aus einer Pipe. Java-Code kann über den von Process#getOutputStream()
zurückgegebenen Ausgabestream auf diese Pipe zugreifen. Die Standardeingabe kann jedoch mithilfe #redirectInput(Redirect) redirectInput
von an eine andere Quelle umgeleitet werden. In diesem Fall Process#getOutputStream()
wird ein NULL-Ausgabestream 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 die Standardausgabe und den Standardfehler in Pipes. Java-Code kann über die von Process#getInputStream()
und Process#getErrorStream()
zurückgegebenen Eingabedatenströme auf diese Pipes zugreifen. Die Standardausgabe und der Standardfehler können jedoch mithilfe von #redirectOutput(Redirect) redirectOutput
und #redirectError(Redirect) redirectError
an andere Ziele umgeleitet werden. In diesem Fall Process#getInputStream()
gibt und/oder Process#getErrorStream()
einen NULL-Eingabedatenstrom zurück, für den Folgendes gilt:
<ul><li>die InputStream#read() read
Methoden geben immer li>zurück<-1
, die InputStream#available() available
Methode gibt immer li zurück0
<,>die InputStream#close() close
Methode macht nichts </ul>
<li>eine redirectErrorStream-Eigenschaft . Zunächst ist false
diese Eigenschaft , was bedeutet, dass die Standardausgabe und die Fehlerausgabe eines Unterprozesses an zwei separate Datenströme gesendet werden, auf die mit den Process#getInputStream()
Methoden und Process#getErrorStream()
zugegriffen werden kann.
Wenn der Wert auf true
festgelegt ist, dann:
<Ul><li>Standardfehler wird mit der Standardausgabe zusammengeführt und immer an dasselbe Ziel gesendet (dies erleichtert die Korrelation von Fehlermeldungen mit der entsprechenden Ausgabe). <Li>das gemeinsame Ziel des Standardfehlers und die Standardausgabe kann mit<#redirectOutput(Redirect) redirectOutput
li>umgeleitet werden, eine beliebige Umleitung, die von der #redirectError(Redirect) redirectError
-Methode festgelegt ist, wird ignoriert, wenn ein Teilprozess <erstellt wird li>, von dem Process#getErrorStream()
der zurückgegebene Stream immer ein NULL-Eingabestrom< ist/ul>
</ul>
Das Ändern der Attribute eines Prozess-Generators wirkt sich auf Prozesse aus, die später mit der Methode dieses #start()
Objekts gestartet werden, aber nie auf zuvor gestartete Prozesse oder den Java-Prozess selbst.
Die meisten Fehlerüberprüfungen werden von der #start()
-Methode durchgeführt. Es ist möglich, den Zustand eines Objekts so zu ändern, dass ein #start()
Fehler auftritt. Wenn Sie beispielsweise das Befehlsattribute auf eine leere Liste festlegen, wird keine Ausnahme ausgelöst, es sei denn #start()
, sie wird aufgerufen.
<strong>Beachten Sie, dass diese Klasse nicht synchronisiert ist.</strong> Wenn mehrere Threads gleichzeitig auf eine ProcessBuilder
instance zugreifen und mindestens einer der Threads eines der Attribute strukturell ändert, muss diese 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 sehen Sie ein Beispiel, das einen Prozess mit einem geänderten Arbeitsverzeichnis und einer geänderten Umgebung startet und die Standardausgabe und den Fehler umleitet, der an eine Protokolldatei angefügt werden soll:
{@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, die auf Arbeiten basieren, die vom Android Open Source Project erstellt und freigegeben wurden und gemäß den In der Attribution License beschriebenen Begriffen verwendet werden.
Konstruktoren
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
Class |
Gibt die Laufzeitklasse dieses |
Handle |
Das Handle zum zugrunde liegenden Android-instance. (Geerbt von Object) |
JniIdentityHashCode |
Diese Klasse wird verwendet, um Betriebssystemprozesse zu erstellen. (Geerbt von Object) |
JniPeerMembers |
Diese Klasse wird verwendet, um Betriebssystemprozesse zu erstellen. |
PeerReference |
Diese Klasse wird verwendet, um Betriebssystemprozesse zu erstellen. (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
Clone() |
Erstellt und gibt eine Kopie dieses Objekts zurück. (Geerbt von Object) |
Command() |
Gibt das Betriebssystemprogramm und die Argumente dieses Prozess-Generators zurück. |
Command(IList<String>) |
Legt das Betriebssystemprogramm und die Argumente dieses Prozess-Generators fest. |
Command(String[]) |
Gibt das Betriebssystemprogramm und die Argumente dieses 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 verwendet, um Betriebssystemprozesse zu erstellen. (Geerbt von Object) |
Dispose(Boolean) |
Diese Klasse wird verwendet, um Betriebssystemprozesse zu erstellen. (Geerbt von Object) |
Environment() |
Gibt eine Zeichenfolgenzuordnungsansicht der Umgebung dieses Prozess-Generators zurück. |
Equals(Object) |
Gibt an, ob ein anderes Objekt diesem "gleich" 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 Unterprozesses fest, dass sie mit denen des aktuellen Java-Prozesses übereinstimmen. |
JavaFinalize() |
Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection feststellt, dass keine Verweise mehr 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 mit den Attributen dieses Prozess-Generators. |
ToArray<T>() |
Diese Klasse wird verwendet, um Betriebssystemprozesse zu erstellen. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolgendarstellung des Objekts zurück. (Geerbt von Object) |
UnregisterFromRuntime() |
Diese Klasse wird verwendet, um Betriebssystemprozesse zu erstellen. (Geerbt von Object) |
Wait() |
Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel durch em benachrichtigen/em> oder <em>interrupted</em>.<>< (Geerbt von Object) |
Wait(Int64) |
Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel, indem <er>benachrichtigt</em> oder <em>interrupted</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
Wait(Int64, Int32) |
Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel, indem <er>benachrichtigt</em> oder <em>interrupted</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
IJavaPeerable.Disposed() |
Diese Klasse wird verwendet, um Betriebssystemprozesse zu erstellen. (Geerbt von Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Diese Klasse wird verwendet, um Betriebssystemprozesse zu erstellen. (Geerbt von Object) |
IJavaPeerable.Finalized() |
Diese Klasse wird verwendet, um Betriebssystemprozesse zu erstellen. (Geerbt von Object) |
IJavaPeerable.JniManagedPeerState |
Diese Klasse wird verwendet, um Betriebssystemprozesse zu erstellen. (Geerbt von Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Diese Klasse wird verwendet, um Betriebssystemprozesse zu erstellen. (Geerbt von Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Diese Klasse wird verwendet, um Betriebssystemprozesse zu erstellen. (Geerbt von Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Diese Klasse wird verwendet, um Betriebssystemprozesse zu erstellen. (Geerbt von Object) |
Erweiterungsmethoden
JavaCast<TResult>(IJavaObject) |
Führt eine Für Android-Runtime überprüfte Typkonvertierung aus. |
JavaCast<TResult>(IJavaObject) |
Diese Klasse wird verwendet, um Betriebssystemprozesse zu erstellen. |
GetJniTypeName(IJavaPeerable) |
Diese Klasse wird verwendet, um Betriebssystemprozesse zu erstellen. |