ProcessBuilder Klasse

Definition

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
ProcessBuilder
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.dirbenannte 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) redirectInputvon 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) redirectErroran 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 falsediese 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 truefestgelegt 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 Objectzurück.

(Geerbt von Object)
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 redirectErrorStream fest.

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.

Gilt für: