Linguaggio

ProcessBuilder Classe

Definizione

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à
ProcessBuilder
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.

per java.lang.ProcessBuilder.

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 Objectoggetto .

(Ereditato da Object)
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 redirectErrorStream processi.

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 selfdi .

JavaAs<TResult>(IJavaPeerable)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

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 selfTResult, verificando che la coercizione sia valida sul lato Java.

Si applica a