ProcessBuilder Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Essa classe é usada para criar processos do sistema operacional.
[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
- Herança
- Atributos
Comentários
Essa classe é usada para criar processos do sistema operacional.
Cada ProcessBuilder instância gerencia uma coleção de atributos de processo. O #start() método cria uma nova Process instância com esses atributos. O #start() método pode ser invocado repetidamente da mesma instância para criar novos subprocessos com atributos idênticos ou relacionados.
Cada construtor de processos gerencia esses atributos de processo:
<ul>
<li>um comando, uma lista de cadeias de caracteres que significa o arquivo de programa externo a ser invocado e seus argumentos, se houver. Quais listas de cadeias de caracteres representam um comando válido do sistema operacional depende do sistema. Por exemplo, é comum que cada argumento conceitual seja um elemento nesta lista, mas há sistemas operacionais em que os programas devem tokenizar cadeias de caracteres de linha de comando em si , em um sistema desse tipo, uma implementação Java pode exigir comandos para conter exatamente dois elementos.
<li>um ambiente, que é um mapeamento dependente do sistema de variáveis para valores. O valor inicial é uma cópia do ambiente do processo atual (consulte System#getenv()).
<li>um diretório de trabalho. O valor padrão é o diretório de trabalho atual do processo atual, geralmente o diretório nomeado pela propriedade user.dirdo sistema.
<li>"redirect-input">uma fonte de <i>de entrada</i> padrão. Por padrão, o subprocesso lê a entrada de um pipe. Java código pode acessar esse pipe por meio do fluxo de saída retornado por Process#getOutputStream(). No entanto, a entrada padrão pode ser redirecionada para outra origem usando #redirectInput(Redirect) redirectInput. Nesse caso, Process#getOutputStream() retornará um fluxo de saída nulo, para o qual:
<ul><li>os OutputStream#write(int) write métodos sempre lançam IOException<li>o OutputStream#close() close método não faz nada </ul>
<li>"redirect-output">um destino para <i>standard output</i> e <i>standard error</i>. Por padrão, o subprocesso grava a saída padrão e o erro padrão nos pipes. Java código pode acessar esses pipes por meio dos fluxos de entrada retornados e Process#getInputStream()Process#getErrorStream(). No entanto, a saída padrão e o erro padrão podem ser redirecionados para outros destinos usando #redirectOutput(Redirect) redirectOutput e #redirectError(Redirect) redirectError. Nesse caso, Process#getInputStream() e/ou Process#getErrorStream() retornará um fluxo de entrada nulo, para o qual:
<ul>li os métodos sempre retornam <>liInputStream#read() reado -1 método sempre retorna<> liInputStream#available() availableo 0 método não faz nada </ul >InputStream#close() close<>
<li>uma propriedade redirectErrorStream . Inicialmente, essa propriedade é false, o que significa que a saída padrão e a saída de erro de um subprocesso são enviados para dois fluxos separados, que podem ser acessados usando os métodos e Process#getInputStream() os Process#getErrorStream() métodos.
Se o valor for definido como true, em seguida:
<O erro padrão ul>li é mesclado com a saída padrão e sempre enviado para o mesmo destino (isso facilita a correlação de mensagens de erro com a saída correspondente) <li>o destino comum do erro padrão e a saída padrão pode ser redirecionada usando <>li#redirectOutput(Redirect) redirectOutputqualquer redirecionamento definido pelo < método é ignorado ao criar um subprocesso >li#redirectError(Redirect) redirectErrordo < qual o fluxo retornado sempre será um fluxo> de entrada nulo/ulProcess#getErrorStream()<>
</ul>
Modificar os atributos de um construtor de processos afetará os processos iniciados posteriormente pelo método desse #start() objeto, mas nunca afetará os processos iniciados anteriormente ou o próprio processo Java.
A maior parte da verificação de erros é executada pelo #start() método. É possível modificar o estado de um objeto para que isso #start() falhe. Por exemplo, definir o atributo de comando como uma lista vazia não gerará uma exceção, a menos que #start() seja invocada.
<forte>Observe que essa classe não está sincronizada.</strong> Se vários threads acessarem uma ProcessBuilder instância simultaneamente e pelo menos um dos threads modificar um dos atributos estruturalmente, ele deverá ser sincronizado externamente.
Iniciar um novo processo que usa o diretório de trabalho e o ambiente padrão é fácil:
{@code
Process p = new ProcessBuilder("myCommand", "myArg").start();
}
Aqui está um exemplo que inicia um processo com um diretório de trabalho e um ambiente modificados e redireciona a saída padrão e o erro a serem acrescentados a um arquivo de 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;
}
Para iniciar um processo com um conjunto explícito de variáveis de ambiente, primeiro chame java.util.Map#clear() Map.clear() antes de adicionar variáveis de ambiente.
Adicionado em 1.5.
Java documentação para java.lang.ProcessBuilder.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.
Construtores
| Nome | Description |
|---|---|
| ProcessBuilder(IList<String>) |
Constrói um construtor de processos com o programa e os argumentos do sistema operacional especificados. |
| ProcessBuilder(String[]) |
Constrói um construtor de processos com o programa e os argumentos do sistema operacional especificados. |
Propriedades
| Nome | Description |
|---|---|
| Class |
Retorna a classe de runtime deste |
| Handle |
O identificador para a instância subjacente do Android. (Herdado de Object) |
| JniIdentityHashCode |
Obtém o código de hash de identidade atribuído a esse par Java pelo runtime de interoperabilidade. (Herdado de Object) |
| JniManagedPeerState |
Essa classe é usada para criar processos do sistema operacional. (Herdado de JavaObject) |
| JniPeerMembers |
Obtém os metadados JNI usados para invocar membros desse par Java. |
| PeerReference |
Obtém a referência de objeto JNI para este par Java. (Herdado de Object) |
| ThresholdClass |
Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código. (Herdado de Object) |
| ThresholdType |
Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código. (Herdado de Object) |
Métodos
| Nome | Description |
|---|---|
| Clone() |
Cria e retorna uma cópia desse objeto. (Herdado de Object) |
| Command() |
Retorna o programa e os argumentos do sistema operacional do construtor de processos. |
| Command(IList<String>) |
Define o programa e os argumentos do sistema operacional do construtor de processos. |
| Command(String[]) |
Retorna o programa e os argumentos do sistema operacional do construtor de processos. |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Essa classe é usada para criar processos do sistema operacional. (Herdado de JavaObject) |
| Directory() |
Retorna o diretório de trabalho desse construtor de processos. |
| Directory(File) |
Define o diretório de trabalho desse construtor de processos. |
| Dispose() |
Libera os recursos mantidos por esse par Java. (Herdado de Object) |
| Dispose(Boolean) |
Libera os recursos mantidos por esse par Java. (Herdado de Object) |
| DisposeUnlessReferenced() |
Essa classe é usada para criar processos do sistema operacional. (Herdado de JavaObject) |
| Environment() |
Retorna uma exibição de mapa de cadeia de caracteres do ambiente desse construtor de processos. |
| Equals(Object) |
Essa classe é usada para criar processos do sistema operacional. (Herdado de JavaObject) |
| Equals(Object) |
Indica se algum outro objeto é "igual a" este. (Herdado de Object) |
| GetHashCode() |
Retorna um valor de código hash para o objeto. (Herdado de Object) |
| InheritIO() |
Define a origem e o destino da E/S padrão de subprocesso como iguais às do processo de Java atual. |
| JavaFinalize() |
Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto. (Herdado de Object) |
| Notify() |
Ativa um único thread que está aguardando no monitor deste objeto. (Herdado de Object) |
| NotifyAll() |
Ativa todos os threads que estão aguardando no monitor deste objeto. (Herdado de Object) |
| RedirectError() |
Retorna o destino de erro padrão desse construtor de processos. |
| RedirectError(File) |
Define o destino de erro padrão desse construtor de processos como um arquivo. |
| RedirectError(ProcessBuilder+Redirect) |
Define o destino de erro padrão desse construtor de processos. |
| RedirectErrorStream() |
Informa se esse construtor de processos mescla o erro padrão e a saída padrão. |
| RedirectErrorStream(Boolean) |
Define a propriedade desse construtor de |
| RedirectInput() |
Retorna a fonte de entrada padrão do construtor de processos. |
| RedirectInput(File) |
Define a origem de entrada padrão desse construtor de processos como um arquivo. |
| RedirectInput(ProcessBuilder+Redirect) |
Define a fonte de entrada padrão do construtor de processos. |
| RedirectOutput() |
Retorna o destino de saída padrão desse construtor de processos. |
| RedirectOutput(File) |
Define o destino de saída padrão desse construtor de processos como um arquivo. |
| RedirectOutput(ProcessBuilder+Redirect) |
Define o destino de saída padrão desse construtor de processos. |
| SetHandle(IntPtr, JniHandleOwnership) |
Define a propriedade Handle (Herdado de Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Essa classe é usada para criar processos do sistema operacional. (Herdado de JavaObject) |
| Start() |
Inicia um novo processo usando os atributos desse construtor de processos. |
| ToArray<T>() |
Cria uma matriz gerenciada com base nesse wrapper de matriz Java. (Herdado de Object) |
| ToString() |
Retorna uma representação de cadeia de caracteres do objeto. (Herdado de Object) |
| UnregisterFromRuntime() |
Cancela o registro desse par Java do runtime de interoperabilidade. (Herdado de Object) |
| Wait() |
Faz com que o thread atual aguarde até ser despertado, normalmente por ser <notificado/em> ou <em>interrompido</em>.<> (Herdado de Object) |
| Wait(Int64, Int32) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido. (Herdado de Object) |
| Wait(Int64) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido. (Herdado de Object) |
Implantações explícitas de interface
| Nome | Description |
|---|---|
| IJavaPeerable.Disposed() |
Essa classe é usada para criar processos do sistema operacional. (Herdado de JavaObject) |
| IJavaPeerable.Finalized() |
Essa classe é usada para criar processos do sistema operacional. (Herdado de JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Essa classe é usada para criar processos do sistema operacional. (Herdado de JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Essa classe é usada para criar processos do sistema operacional. (Herdado de JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Essa classe é usada para criar processos do sistema operacional. (Herdado de JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Essa classe é usada para criar processos do sistema operacional. (Herdado de JavaObject) |
Métodos de Extensão
| Nome | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtém o nome JNI do tipo da instância |
| JavaAs<TResult>(IJavaPeerable) |
Tente coagir a digitar |
| JavaCast<TResult>(IJavaObject) |
Executa uma conversão de tipo marcada por runtime do Android. |
| JavaCast<TResult>(IJavaObject) |
Essa classe é usada para criar processos do sistema operacional. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Tente coagir a digitar |