ProcessBuilder Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Questa classe viene usata per creare processi del sistema operativo.
[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
- Ereditarietà
- Attributi
Commenti
Questa classe viene usata per creare processi del sistema operativo.
Ogni ProcessBuilder istanza gestisce una raccolta di attributi di processo. Il #start() metodo crea una nuova Process istanza con tali attributi. Il #start() metodo può essere richiamato ripetutamente dalla stessa istanza per creare nuovi sottoprocessi con attributi identici o correlati.
Ogni generatore di processi gestisce questi attributi di processo:
<ul>
<li>a command, un elenco di stringhe che indica il file di programma esterno da richiamare e i relativi argomenti, se presenti. Gli elenchi di stringhe rappresentano un comando valido del sistema operativo dipendente dal sistema. Ad esempio, è comune che ogni argomento concettuale sia un elemento in questo elenco, ma ci sono sistemi operativi in cui i programmi devono tokenizzare le stringhe della riga di comando stessi. In un sistema di questo tipo un'implementazione di Java potrebbe richiedere che i comandi contengano esattamente due elementi.
<li>un ambiente, che è un mapping dipendente dal sistema dalle variabili ai valori. Il valore iniziale è una copia dell'ambiente del processo corrente (vedere System#getenv()).
<li>una directory di lavoro. Il valore predefinito è la directory di lavoro corrente del processo corrente, in genere la directory denominata dalla proprietà user.dirdi sistema .
<li>"redirect-input">a source of <i>standard input</i>. Per impostazione predefinita, il sottoprocesso legge l'input da una pipe. Java codice può accedere a questa pipe tramite il flusso di output restituito da Process#getOutputStream(). Tuttavia, l'input standard può essere reindirizzato a un'altra origine usando #redirectInput(Redirect) redirectInput. In questo caso, Process#getOutputStream() restituirà un flusso di output Null, per il quale:
<ul><li>i OutputStream#write(int) write metodi sempre throw IOException<li>il OutputStream#close() close metodo non esegue alcuna <operazione /ul>
<li>"redirect-output">a destination for <i>standard output</i> and <i>standard error</i>. Per impostazione predefinita, il sottoprocesso scrive l'output standard e l'errore standard nelle pipe. Java codice può accedere a queste pipe tramite i flussi di input restituiti da Process#getInputStream() e Process#getErrorStream(). Tuttavia, l'output standard e l'errore standard possono essere reindirizzati ad altre destinazioni usando #redirectOutput(Redirect) redirectOutput e #redirectError(Redirect) redirectError. In questo caso, Process#getInputStream() e/o Process#getErrorStream() restituirà un flusso di input Null, per il quale:
<ul><li>i InputStream#read() read metodi restituiscono -1<sempre li il > metodo restituisceInputStream#available() available0 sempre li<>il InputStream#close() close metodo non esegue alcuna <operazione /ul>
<li>una proprietà redirectErrorStream . Inizialmente, questa proprietà è false, ovvero l'output standard e l'output degli errori di un subprocesso vengono inviati a due flussi separati, a cui è possibile accedere usando i Process#getInputStream() metodi e Process#getErrorStream() .
Se il valore è impostato su true, allora:
<l'errore standard ul><li viene unito all'output standard e viene sempre inviato alla stessa destinazione (in questo modo è più facile correlare i messaggi di errore con l'output corrispondente) >li<>la destinazione comune dell'errore standard e l'output standard può essere reindirizzato usando #redirectOutput(Redirect) redirectOutput<li>qualsiasi reindirizzamento impostato dal #redirectError(Redirect) redirectError metodo viene ignorato quando si crea un sottoprocesso <li>dal flusso restituito Process#getErrorStream() sarà sempre un flusso< di input Null/ul>
</ul>
La modifica degli attributi di un generatore di processi influirà sui processi avviati successivamente dal metodo dell#start()'oggetto, ma non influirà mai sui processi avviati in precedenza o sul processo Java stesso.
La maggior parte del controllo degli errori viene eseguita dal #start() metodo . È possibile modificare lo stato di un oggetto in modo che #start() non riesca. Ad esempio, l'impostazione dell'attributo di comando su un elenco vuoto non genererà un'eccezione a meno che non #start() venga richiamata.
<strong>Si noti che questa classe non è sincronizzata.</strong> Se più thread accedono contemporaneamente a un'istanza ProcessBuilder e almeno uno dei thread modifica uno degli attributi in modo strutturale, deve essere sincronizzato esternamente.
L'avvio di un nuovo processo che usa la directory di lavoro predefinita e l'ambiente è semplice:
{@code
Process p = new ProcessBuilder("myCommand", "myArg").start();
}
Di seguito è riportato un esempio che avvia un processo con una directory di lavoro e un ambiente di lavoro modificati e reindirizza l'output standard e l'errore da aggiungere a un file di log:
{@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;
}
Per avviare un processo con un set esplicito di variabili di ambiente, chiamare java.util.Map#clear() Map.clear() prima di aggiungere variabili di ambiente.
Aggiunto nella versione 1.5.
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.
Costruttori
| Nome | Descrizione |
|---|---|
| ProcessBuilder(IList<String>) |
Costruisce un generatore di processi con il programma e gli argomenti del sistema operativo specificati. |
| ProcessBuilder(String[]) |
Costruisce un generatore di processi con il programma e gli argomenti del sistema operativo specificati. |
Proprietà
| Nome | Descrizione |
|---|---|
| Class |
Restituisce la classe di runtime di questo |
| Handle |
Handle per l'istanza di Android sottostante. (Ereditato da Object) |
| JniIdentityHashCode |
Ottiene il codice hash di identità assegnato a questo Java peer dal runtime di interoperabilità. (Ereditato da Object) |
| JniManagedPeerState |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da JavaObject) |
| JniPeerMembers |
Ottiene i metadati JNI usati per richiamare i membri di questo peer Java. |
| PeerReference |
Ottiene il riferimento all'oggetto JNI per questo peer Java. (Ereditato da Object) |
| ThresholdClass |
Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice. (Ereditato da Object) |
| ThresholdType |
Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice. (Ereditato da Object) |
Metodi
| Nome | Descrizione |
|---|---|
| Clone() |
Crea e restituisce una copia di questo oggetto. (Ereditato da Object) |
| Command() |
Restituisce il programma e gli argomenti del sistema operativo del generatore di processi. |
| Command(IList<String>) |
Imposta il programma e gli argomenti del sistema operativo del generatore di processi. |
| Command(String[]) |
Restituisce il programma e gli argomenti del sistema operativo del generatore di processi. |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da JavaObject) |
| Directory() |
Restituisce la directory di lavoro di questo generatore di processi. |
| Directory(File) |
Imposta la directory di lavoro di questo generatore di processi. |
| Dispose() |
Rilascia le risorse contenute in questo peer Java. (Ereditato da Object) |
| Dispose(Boolean) |
Rilascia le risorse contenute in questo peer Java. (Ereditato da Object) |
| DisposeUnlessReferenced() |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da JavaObject) |
| Environment() |
Restituisce una visualizzazione mappa stringa dell'ambiente del generatore di processi. |
| Equals(Object) |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da JavaObject) |
| Equals(Object) |
Indica se un altro oggetto è "uguale a" questo. (Ereditato da Object) |
| GetHashCode() |
Restituisce un valore di codice hash per l'oggetto . (Ereditato da Object) |
| InheritIO() |
Imposta l'origine e la destinazione per l'I/O standard del sottoprocesso come quelli del processo di Java corrente. |
| JavaFinalize() |
Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto . (Ereditato da Object) |
| Notify() |
Riattiva un singolo thread in attesa del monitor dell'oggetto. (Ereditato da Object) |
| NotifyAll() |
Riattiva tutti i thread in attesa del monitor dell'oggetto. (Ereditato da Object) |
| RedirectError() |
Restituisce la destinazione di errore standard di questo generatore di processi. |
| RedirectError(File) |
Imposta la destinazione di errore standard di questo generatore di processi su un file. |
| RedirectError(ProcessBuilder+Redirect) |
Imposta la destinazione di errore standard di questo generatore di processi. |
| RedirectErrorStream() |
Indica se questo generatore di processi unisce l'errore standard e l'output standard. |
| RedirectErrorStream(Boolean) |
Imposta la proprietà del generatore di |
| RedirectInput() |
Restituisce l'origine di input standard di questo generatore di processi. |
| RedirectInput(File) |
Imposta l'origine di input standard di questo generatore di processi su un file. |
| RedirectInput(ProcessBuilder+Redirect) |
Imposta l'origine di input standard di questo generatore di processi. |
| RedirectOutput() |
Restituisce la destinazione di output standard di questo generatore di processi. |
| RedirectOutput(File) |
Imposta la destinazione di output standard di questo generatore di processi su un file. |
| RedirectOutput(ProcessBuilder+Redirect) |
Imposta la destinazione di output standard di questo generatore di processi. |
| SetHandle(IntPtr, JniHandleOwnership) |
Imposta la proprietà Handle. (Ereditato da Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da JavaObject) |
| Start() |
Avvia un nuovo processo usando gli attributi di questo generatore di processi. |
| ToArray<T>() |
Crea una matrice gestita da questo wrapper di matrice Java. (Ereditato da Object) |
| ToString() |
Restituisce una rappresentazione di stringa dell'oggetto . (Ereditato da Object) |
| UnregisterFromRuntime() |
Annulla la registrazione di questo Java peer dal runtime di interoperabilità. (Ereditato da Object) |
| Wait() |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>. (Ereditato da Object) |
| Wait(Int64, Int32) |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale. (Ereditato da Object) |
| Wait(Int64) |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| IJavaPeerable.Disposed() |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da JavaObject) |
| IJavaPeerable.Finalized() |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da JavaObject) |
Metodi di estensione
| Nome | Descrizione |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ottiene il nome JNI del tipo dell'istanza |
| JavaAs<TResult>(IJavaPeerable) |
Provare a digitare |
| JavaCast<TResult>(IJavaObject) |
Esegue una conversione del tipo di tipo controllato dal runtime Android. |
| JavaCast<TResult>(IJavaObject) |
Questa classe viene usata per creare processi del sistema operativo. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Provare a digitare |