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 presente. Quali elenchi di stringhe rappresentano un comando del sistema operativo valido dipende dal sistema. Ad esempio, è comune che ogni argomento concettuale sia un elemento in questo elenco, ma esistono sistemi operativi in cui i programmi devono tokenizzare le stringhe della riga di comando. In tale sistema un'implementazione Java potrebbe richiedere comandi per contenere esattamente due elementi.
<li>un ambiente, ovvero 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.dir
di sistema .
<li>"redirect-input">un'origine di <input/i>> standard<. Per impostazione predefinita, il subprocesso legge l'input da una pipe. Il codice Java 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 cui:
<ul><li>i OutputStream#write(int) write
metodi generano IOException
<sempre li>il OutputStream#close() close
metodo non fa nulla </ul>
<li>"redirect-output">a destination for <i>standard output</i> and <i standard error</i>>. Per impostazione predefinita, il subprocesso scrive l'output standard e l'errore standard in pipe. Il codice Java 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 cui:
<ul><li>i InputStream#read() read
metodi restituiscono -1
<sempre li il InputStream#available() available
metodo restituisce<0
sempre li>>il InputStream#close() close
metodo non fa nulla </ul>
<li>una proprietà redirectErrorStream . Inizialmente, questa proprietà è false
, significa che 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:
<ul><li standard error viene unito all'output standard e viene sempre inviato alla stessa destinazione (in questo modo è più semplice 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>il flusso restituito da Process#getErrorStream()
sarà sempre un flusso< di input Null/ul>
</ul>
La modifica degli attributi di un generatore di processi influisce sui processi avviati successivamente dal metodo dell'oggetto #start()
, ma non influisce mai sui processi avviati in precedenza o sul processo Java stesso.
La maggior parte dei #start()
controlli degli errori viene eseguita dal metodo . È possibile modificare lo stato di un oggetto in modo che non #start()
riesca. Ad esempio, l'impostazione dell'attributo di comando su un elenco vuoto non genererà un'eccezione a meno che #start()
non venga richiamata.
<nota forte>che questa classe non è sincronizzata.</strong> Se più thread accedono simultaneamente 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();
}
Ecco un esempio che avvia un processo con una directory di lavoro e un ambiente di lavoro modificato e reindirizza l'output e l'errore standard 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, prima java.util.Map#clear() Map.clear()
di aggiungere variabili di ambiente.
Aggiunto nella versione 1.5.
Documentazione Java per java.lang.ProcessBuilder
.
Le parti di questa pagina sono modifiche in base al lavoro creato e condiviso dal Android Open Source e usato in base ai termini descritti nella .
Costruttori
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à
Class |
Restituisce la classe di runtime di questo |
Handle |
Handle all'istanza di Android sottostante. (Ereditato da Object) |
JniIdentityHashCode |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da Object) |
JniPeerMembers |
Questa classe viene usata per creare processi del sistema operativo. |
PeerReference |
Questa classe viene usata per creare processi del sistema operativo. (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
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. |
Directory() |
Restituisce la directory di lavoro del generatore di processi. |
Directory(File) |
Imposta la directory di lavoro del generatore di processi. |
Dispose() |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da Object) |
Dispose(Boolean) |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da Object) |
Environment() |
Restituisce una visualizzazione mappa stringa dell'ambiente del generatore di processi. |
Equals(Object) |
Indica se un altro oggetto è "uguale a" questo. (Ereditato da Object) |
GetHashCode() |
Restituisce un valore del codice hash per l'oggetto. (Ereditato da Object) |
InheritIO() |
Imposta l'origine e la destinazione per l'I/O standard di subprocesso come quelli del processo Java corrente. |
JavaFinalize() |
Chiamato dal Garbage Collector in un oggetto quando Garbage Collection determina che non sono presenti più riferimenti all'oggetto. (Ereditato da Object) |
Notify() |
Riattiva un singolo thread in attesa del monitoraggio dell'oggetto. (Ereditato da Object) |
NotifyAll() |
Riattiva tutti i thread in attesa del monitoraggio dell'oggetto. (Ereditato da Object) |
RedirectError() |
Restituisce la destinazione di errore standard del generatore di processi. |
RedirectError(File) |
Imposta la destinazione di errore standard di questo generatore di processi su un file. |
RedirectError(ProcessBuilder+Redirect) |
Restituisce la destinazione di errore standard del generatore di processi. |
RedirectErrorStream() |
Indica se questo generatore di processi unisce l'errore standard e l'output standard. |
RedirectErrorStream(Boolean) |
Imposta la proprietà del |
RedirectInput() |
Restituisce l'origine di input standard del generatore di processi. |
RedirectInput(File) |
Imposta l'origine di input standard di questo generatore di processi su un file. |
RedirectInput(ProcessBuilder+Redirect) |
Restituisce l'origine di input standard del generatore di processi. |
RedirectOutput() |
Restituisce la destinazione di output standard del generatore di processi. |
RedirectOutput(File) |
Imposta la destinazione di output standard del generatore di processi su un file. |
RedirectOutput(ProcessBuilder+Redirect) |
Restituisce la destinazione di output standard del generatore di processi. |
SetHandle(IntPtr, JniHandleOwnership) |
Imposta la proprietà Handle. (Ereditato da Object) |
Start() |
Avvia un nuovo processo usando gli attributi di questo generatore di processi. |
ToArray<T>() |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da Object) |
ToString() |
Restituisce una rappresentazione in formato stringa dell'oggetto. (Ereditato da Object) |
UnregisterFromRuntime() |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da Object) |
Wait() |
Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere eseguendo>una notifica</em o <em interrotto</>em>>.< (Ereditato da Object) |
Wait(Int64) |
Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere <>eseguendo una notifica</em o <em interrotto/>>em>o fino a quando non è trascorsa< una determinata quantità di tempo reale. (Ereditato da Object) |
Wait(Int64, Int32) |
Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere <>eseguendo 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
IJavaPeerable.Disposed() |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da Object) |
IJavaPeerable.Finalized() |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da Object) |
IJavaPeerable.JniManagedPeerState |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Questa classe viene usata per creare processi del sistema operativo. (Ereditato da Object) |
Metodi di estensione
JavaCast<TResult>(IJavaObject) |
Esegue una conversione dei tipi controllati dal runtime Android. |
JavaCast<TResult>(IJavaObject) |
Questa classe viene usata per creare processi del sistema operativo. |
GetJniTypeName(IJavaPeerable) |
Questa classe viene usata per creare processi del sistema operativo. |