ProcessBuilder Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Cette classe est utilisée pour créer des processus de système d’exploitation.
[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
- Héritage
- Attributs
Remarques
Cette classe est utilisée pour créer des processus de système d’exploitation.
Chaque ProcessBuilder instance gère une collection d’attributs de processus. La #start() méthode crée une instance Process avec ces attributs. La #start() méthode peut être appelée à plusieurs reprises à partir de la même instance pour créer de nouveaux sous-processus avec des attributs identiques ou associés.
Chaque générateur de processus gère ces attributs de processus :
<ul>
<li>a command, une liste de chaînes qui signifie que le fichier de programme externe doit être appelé et ses arguments, le cas échéant. Quelles listes de chaînes représentent une commande de système d’exploitation valide dépend du système. Par exemple, il est courant que chaque argument conceptuel soit un élément de cette liste, mais il existe des systèmes d’exploitation où les programmes sont censés tokeniser eux-mêmes des chaînes de ligne de commande , sur un tel système, une implémentation Java peut nécessiter des commandes pour contenir exactement deux éléments.
<li>un environnement, qui est un mappage dépendant du système des variables aux valeurs. La valeur initiale est une copie de l’environnement du processus actuel (voir System#getenv()).
<li>a working directory. La valeur par défaut est le répertoire de travail actuel du processus actuel, généralement le répertoire nommé par la propriété user.dirsystème .
<li>"redirect-input">une source d’entrée<></i> standard. Par défaut, le sous-processus lit l’entrée à partir d’un canal. Java code peut accéder à ce canal via le flux de sortie retourné par Process#getOutputStream(). Toutefois, l’entrée standard peut être redirigée vers une autre source à l’aide #redirectInput(Redirect) redirectInputde . Dans ce cas, Process#getOutputStream() retourne un flux de sortie Null pour lequel :
<ul>li les méthodes lèvent <>toujours liOutputStream#write(int) writela IOException méthode ne fait rien </ul >OutputStream#close() close<>
<li>"redirect-output">a destination pour <i>standard output</i> et <i>standard error</i>. Par défaut, le sous-processus écrit la sortie standard et l’erreur standard dans les canaux. Java code peut accéder à ces canaux via les flux d’entrée retournés par Process#getInputStream() et Process#getErrorStream(). Toutefois, la sortie standard et l’erreur standard peuvent être redirigées vers d’autres destinations à l’aide #redirectOutput(Redirect) redirectOutput et #redirectError(Redirect) redirectError. Dans ce cas, Process#getInputStream() et/ou Process#getErrorStream() retourne un flux d’entrée Null pour lequel :
<ul><li>les InputStream#read() read méthodes retournent -1<toujours li>la InputStream#available() available méthode toujours renvoie 0<li>la InputStream#close() close méthode ne fait rien </ul>
<li>a redirectErrorStream , propriété. Initialement, cette propriété est false, ce qui signifie que la sortie standard et la sortie d’erreur d’un sous-processus sont envoyées à deux flux distincts, qui sont accessibles à l’aide des méthodes et Process#getInputStream() des Process#getErrorStream() méthodes.
Si la valeur est définie truesur , puis :
<L’erreur standard ul>li est fusionnée avec la sortie standard et toujours envoyée à la même destination (cela facilite la mise en corrélation des messages d’erreur avec la sortie correspondante) <li>la destination commune de l’erreur standard et la sortie standard peut être redirigée à l’aide <>de li#redirectOutput(Redirect) redirectOutputtoute redirection définie par la méthode est ignorée lors de la < création d’un sous-processus >li#redirectError(Redirect) redirectErrorle flux retourné < sera toujours un flux> d’entrée Null/ulProcess#getErrorStream()<>
</ul>
La modification des attributs d'un générateur de processus affecte les processus démarrés par la suite par la méthode de #start() cet objet, mais n'affecte jamais les processus démarrés précédemment ou le processus Java lui-même.
La plupart des vérifications des erreurs sont effectuées par la #start() méthode. Il est possible de modifier l’état d’un objet afin qu’il #start() échoue. Par exemple, la définition de l’attribut de commande sur une liste vide ne lève pas d’exception, sauf si #start() elle est appelée.
<
>notez que cette classe n’est pas synchronisée.</strong> Si plusieurs threads accèdent simultanément à une ProcessBuilder instance et qu’au moins un des threads modifie l’un des attributs structurellement, il doit être synchronisé en externe.
Le démarrage d’un nouveau processus qui utilise le répertoire de travail et l’environnement par défaut est facile :
{@code
Process p = new ProcessBuilder("myCommand", "myArg").start();
}
Voici un exemple qui démarre un processus avec un répertoire de travail et un environnement modifiés, et redirige la sortie et l’erreur standard à ajouter à un fichier journal :
{@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;
}
Pour démarrer un processus avec un ensemble explicite de variables d’environnement, appelez java.util.Map#clear() Map.clear() d’abord avant d’ajouter des variables d’environnement.
Ajouté à la version 1.5.
Java documentation pour java.lang.ProcessBuilder.
Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.
Constructeurs
| Nom | Description |
|---|---|
| ProcessBuilder(IList<String>) |
Construit un générateur de processus avec le programme et les arguments spécifiés du système d’exploitation. |
| ProcessBuilder(String[]) |
Construit un générateur de processus avec le programme et les arguments spécifiés du système d’exploitation. |
Propriétés
| Nom | Description |
|---|---|
| Class |
Retourne la classe runtime de ce |
| Handle |
Handle de l’instance Android sous-jacente. (Hérité de Object) |
| JniIdentityHashCode |
Obtient le code de hachage d’identité affecté à cet homologue Java par le runtime d’interopérabilité. (Hérité de Object) |
| JniManagedPeerState |
Cette classe est utilisée pour créer des processus de système d’exploitation. (Hérité de JavaObject) |
| JniPeerMembers |
Obtient les métadonnées JNI utilisées pour appeler les membres de cet homologue Java. |
| PeerReference |
Obtient la référence d’objet JNI pour cet homologue Java. (Hérité de Object) |
| ThresholdClass |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. (Hérité de Object) |
| ThresholdType |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. (Hérité de Object) |
Méthodes
| Nom | Description |
|---|---|
| Clone() |
Crée et retourne une copie de cet objet. (Hérité de Object) |
| Command() |
Retourne le programme et les arguments du système d’exploitation du générateur de processus. |
| Command(IList<String>) |
Définit le programme et les arguments du système d’exploitation de ce générateur de processus. |
| Command(String[]) |
Retourne le programme et les arguments du système d’exploitation du générateur de processus. |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Cette classe est utilisée pour créer des processus de système d’exploitation. (Hérité de JavaObject) |
| Directory() |
Retourne le répertoire de travail de ce générateur de processus. |
| Directory(File) |
Définit le répertoire de travail de ce générateur de processus. |
| Dispose() |
Libère les ressources détenues par cet homologue Java. (Hérité de Object) |
| Dispose(Boolean) |
Libère les ressources détenues par cet homologue Java. (Hérité de Object) |
| DisposeUnlessReferenced() |
Cette classe est utilisée pour créer des processus de système d’exploitation. (Hérité de JavaObject) |
| Environment() |
Retourne une vue de carte de chaîne de l’environnement de ce générateur de processus. |
| Equals(Object) |
Cette classe est utilisée pour créer des processus de système d’exploitation. (Hérité de JavaObject) |
| Equals(Object) |
Indique si un autre objet est « égal à » celui-ci. (Hérité de Object) |
| GetHashCode() |
Retourne une valeur de code de hachage pour l’objet. (Hérité de Object) |
| InheritIO() |
Définit la source et la destination des E/S standard de sous-processus à être identiques à celles du processus de Java actuel. |
| JavaFinalize() |
Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet. (Hérité de Object) |
| Notify() |
Réveille un thread unique qui attend le moniteur de cet objet. (Hérité de Object) |
| NotifyAll() |
Réveille tous les threads qui attendent le moniteur de cet objet. (Hérité de Object) |
| RedirectError() |
Retourne la destination d’erreur standard du générateur de processus. |
| RedirectError(File) |
Définit la destination d’erreur standard de ce générateur de processus sur un fichier. |
| RedirectError(ProcessBuilder+Redirect) |
Définit la destination d’erreur standard de ce générateur de processus. |
| RedirectErrorStream() |
Indique si ce générateur de processus fusionne l’erreur standard et la sortie standard. |
| RedirectErrorStream(Boolean) |
Définit la propriété de ce générateur de |
| RedirectInput() |
Retourne la source d’entrée standard de ce générateur de processus. |
| RedirectInput(File) |
Définit la source d’entrée standard de ce générateur de processus sur un fichier. |
| RedirectInput(ProcessBuilder+Redirect) |
Définit la source d’entrée standard de ce générateur de processus. |
| RedirectOutput() |
Retourne la destination de sortie standard de ce générateur de processus. |
| RedirectOutput(File) |
Définit la destination de sortie standard de ce générateur de processus sur un fichier. |
| RedirectOutput(ProcessBuilder+Redirect) |
Définit la destination de sortie standard de ce générateur de processus. |
| SetHandle(IntPtr, JniHandleOwnership) |
Définit la propriété Handle. (Hérité de Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Cette classe est utilisée pour créer des processus de système d’exploitation. (Hérité de JavaObject) |
| Start() |
Démarre un nouveau processus à l’aide des attributs de ce générateur de processus. |
| ToArray<T>() |
Crée un tableau managé à partir de ce wrapper de tableau Java. (Hérité de Object) |
| ToString() |
Retourne une représentation sous forme de chaîne de l’objet. (Hérité de Object) |
| UnregisterFromRuntime() |
Annule l’inscription de cet homologue Java à partir du runtime d’interopérabilité. (Hérité de Object) |
| Wait() |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou><em>interrompu</em>.<> (Hérité de Object) |
| Wait(Int64, Int32) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
| Wait(Int64) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
Implémentations d’interfaces explicites
| Nom | Description |
|---|---|
| IJavaPeerable.Disposed() |
Cette classe est utilisée pour créer des processus de système d’exploitation. (Hérité de JavaObject) |
| IJavaPeerable.Finalized() |
Cette classe est utilisée pour créer des processus de système d’exploitation. (Hérité de JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Cette classe est utilisée pour créer des processus de système d’exploitation. (Hérité de JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Cette classe est utilisée pour créer des processus de système d’exploitation. (Hérité de JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Cette classe est utilisée pour créer des processus de système d’exploitation. (Hérité de JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Cette classe est utilisée pour créer des processus de système d’exploitation. (Hérité de JavaObject) |
Méthodes d’extension
| Nom | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtient le nom JNI du type de l’instance |
| JavaAs<TResult>(IJavaPeerable) |
Essayez de forcer |
| JavaCast<TResult>(IJavaObject) |
Effectue une conversion de type vérifiée par le runtime Android. |
| JavaCast<TResult>(IJavaObject) |
Cette classe est utilisée pour créer des processus de système d’exploitation. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Essayez de forcer |