ProcessBuilder Clase

Definición

Esta clase se usa para crear procesos de 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
Herencia
ProcessBuilder
Atributos

Comentarios

Esta clase se usa para crear procesos de sistema operativo.

Cada ProcessBuilder instancia administra una colección de atributos de proceso. El #start() método crea una nueva Process instancia con esos atributos. El #start() método se puede invocar repetidamente desde la misma instancia para crear nuevos subprocesos con atributos idénticos o relacionados.

Cada generador de procesos administra estos atributos de proceso:

<ul>

<li>un comando, una lista de cadenas que indica el archivo de programa externo que se va a invocar y sus argumentos, si los hay. Las listas de cadenas representan un comando de sistema operativo válido depende del sistema. Por ejemplo, es habitual que cada argumento conceptual sea un elemento de esta lista, pero hay sistemas operativos en los que se espera que los programas tokenicen cadenas de línea de comandos en sí mismos; en este tipo de sistema, una implementación de Java podría requerir comandos para contener exactamente dos elementos.

<li>un entorno, que es una asignación dependiente del sistema de variables a valores. El valor inicial es una copia del entorno del proceso actual (vea System#getenv()).

<li>a working directory. El valor predeterminado es el directorio de trabajo actual del proceso actual, normalmente el directorio denominado por la propiedad user.dirdel sistema .

<li>"redirect-input">a source of <i>standard input</i>. De forma predeterminada, el subproceso lee la entrada de una canalización. El código Java puede acceder a esta canalización a través del flujo de salida devuelto por Process#getOutputStream(). Sin embargo, la entrada estándar se puede redirigir a otro origen mediante #redirectInput(Redirect) redirectInput. En este caso, Process#getOutputStream() devolverá un flujo de salida nulo, para el que:

<ul><li>los OutputStream#write(int) write métodos siempre inician IOException<li>el OutputStream#close() close método no hace nada </ul>

<li>"redirect-output">a destination for <i>standard output</i> and <i standard error</i>>. De forma predeterminada, el subproceso escribe la salida estándar y el error estándar en las canalizaciones. El código Java puede acceder a estas canalizaciones a través de los flujos de entrada devueltos por Process#getInputStream() y Process#getErrorStream(). Sin embargo, la salida estándar y el error estándar se pueden redirigir a otros destinos mediante #redirectOutput(Redirect) redirectOutput y #redirectError(Redirect) redirectError. En este caso, Process#getInputStream() o Process#getErrorStream() devolverá una secuencia de entrada nula, para la que:

<ul>li los métodos siempre devuelven<-1 li>el InputStream#available() available método siempre devuelve<0 li>el InputStream#close() close método no hace nada </ul InputStream#read() read><>

<li>una propiedad redirectErrorStream . Inicialmente, esta propiedad es false, lo que significa que la salida estándar y la salida de error de un subproceso se envían a dos secuencias independientes, a las que se puede acceder mediante los Process#getInputStream() métodos y Process#getErrorStream() .

Si el valor se establece trueen , entonces:

<>El error estándar ul<>li se combina con la salida estándar y siempre se envía al mismo destino (esto facilita la correlación de los mensajes de error con la salida correspondiente) <li>el destino común del error estándar y la salida estándar se puede redirigir mediante<#redirectOutput(Redirect) redirectOutput li>cualquier redireccionamiento establecido por el #redirectError(Redirect) redirectError método al crear un subproceso <li>la secuencia devuelta Process#getErrorStream() desde siempre será una secuencia< de entrada/ul nula.>

</ul>

La modificación de los atributos de un generador de procesos afectará a los procesos iniciados posteriormente por el método de #start() ese objeto, pero nunca afectará a los procesos iniciados previamente o al propio proceso de Java.

La mayoría de las comprobaciones de errores se realiza mediante el #start() método . Es posible modificar el estado de un objeto para que se produzca un #start() error. Por ejemplo, si se establece el atributo de comando en una lista vacía, no se producirá una excepción a menos que #start() se invoque.

<fuerte>Tenga en cuenta que esta clase no está sincronizada.</strong> Si varios subprocesos acceden a una ProcessBuilder instancia simultáneamente y al menos uno de los subprocesos modifica uno de los atributos estructuralmente, se debe sincronizar externamente.

Iniciar un nuevo proceso que usa el directorio de trabajo y el entorno predeterminados es fácil:

{@code
            Process p = new ProcessBuilder("myCommand", "myArg").start();
            }

Este es un ejemplo que inicia un proceso con un directorio de trabajo y un entorno modificados, y redirige la salida estándar y el error para anexarse a un archivo de registro:

{@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 un proceso con un conjunto explícito de variables de entorno, llame primero java.util.Map#clear() Map.clear() a antes de agregar variables de entorno.

Agregado en 1.5.

Documentación de Java para java.lang.ProcessBuilder.

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código y se usan según los términos descritos en la creative Commons 2.5.

Constructores

ProcessBuilder(IList<String>)

Construye un generador de procesos con el programa y argumentos del sistema operativo especificados.

ProcessBuilder(String[])

Construye un generador de procesos con el programa y argumentos del sistema operativo especificados.

Propiedades

Class

Devuelve la clase en tiempo de ejecución de este Objectobjeto .

(Heredado de Object)
Handle

Identificador de la instancia de Android subyacente.

(Heredado de Object)
JniIdentityHashCode

Esta clase se usa para crear procesos de sistema operativo.

(Heredado de Object)
JniPeerMembers

Esta clase se usa para crear procesos de sistema operativo.

PeerReference

Esta clase se usa para crear procesos de sistema operativo.

(Heredado de Object)
ThresholdClass

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

(Heredado de Object)
ThresholdType

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

(Heredado de Object)

Métodos

Clone()

Crea y devuelve una copia de este objeto.

(Heredado de Object)
Command()

Devuelve el programa y los argumentos del sistema operativo del generador de procesos.

Command(IList<String>)

Establece el programa y argumentos del sistema operativo del generador de procesos.

Command(String[])

Devuelve el programa y los argumentos del sistema operativo del generador de procesos.

Directory()

Devuelve el directorio de trabajo de este generador de procesos.

Directory(File)

Establece el directorio de trabajo de este generador de procesos.

Dispose()

Esta clase se usa para crear procesos de sistema operativo.

(Heredado de Object)
Dispose(Boolean)

Esta clase se usa para crear procesos de sistema operativo.

(Heredado de Object)
Environment()

Devuelve una vista de mapa de cadenas del entorno de este generador de procesos.

Equals(Object)

Indica si algún otro objeto es "igual a" este.

(Heredado de Object)
GetHashCode()

Devuelve un valor de código hash del objeto.

(Heredado de Object)
InheritIO()

Establece el origen y el destino para que la E/S estándar de subproceso sea la misma que la del proceso de Java actual.

JavaFinalize()

Llamado por el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto.

(Heredado de Object)
Notify()

Activa un único subproceso que está esperando en el monitor de este objeto.

(Heredado de Object)
NotifyAll()

Activa todos los subprocesos que están esperando en el monitor de este objeto.

(Heredado de Object)
RedirectError()

Devuelve el destino de error estándar del generador de procesos.

RedirectError(File)

Establece el destino de error estándar de este generador de procesos en un archivo.

RedirectError(ProcessBuilder+Redirect)

Devuelve el destino de error estándar del generador de procesos.

RedirectErrorStream()

Indica si este generador de procesos combina el error estándar y la salida estándar.

RedirectErrorStream(Boolean)

Establece la propiedad de este generador de redirectErrorStream procesos.

RedirectInput()

Devuelve el origen de entrada estándar del generador de procesos.

RedirectInput(File)

Establece el origen de entrada estándar de este generador de procesos en un archivo.

RedirectInput(ProcessBuilder+Redirect)

Devuelve el origen de entrada estándar del generador de procesos.

RedirectOutput()

Devuelve el destino de salida estándar del generador de procesos.

RedirectOutput(File)

Establece el destino de salida estándar de este generador de procesos en un archivo.

RedirectOutput(ProcessBuilder+Redirect)

Devuelve el destino de salida estándar del generador de procesos.

SetHandle(IntPtr, JniHandleOwnership)

Establece la propiedad Handle.

(Heredado de Object)
Start()

Inicia un nuevo proceso con los atributos de este generador de procesos.

ToArray<T>()

Esta clase se usa para crear procesos de sistema operativo.

(Heredado de Object)
ToString()

Devuelve una representación de cadena del objeto.

(Heredado de Object)
UnregisterFromRuntime()

Esta clase se usa para crear procesos de sistema operativo.

(Heredado de Object)
Wait()

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser em notificado/em> o <em>interrumpido</em>.<><

(Heredado de Object)
Wait(Int64)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <notificado<>/em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)
Wait(Int64, Int32)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <notificado<>/em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)

Implementaciones de interfaz explícitas

IJavaPeerable.Disposed()

Esta clase se usa para crear procesos de sistema operativo.

(Heredado de Object)
IJavaPeerable.DisposeUnlessReferenced()

Esta clase se usa para crear procesos de sistema operativo.

(Heredado de Object)
IJavaPeerable.Finalized()

Esta clase se usa para crear procesos de sistema operativo.

(Heredado de Object)
IJavaPeerable.JniManagedPeerState

Esta clase se usa para crear procesos de sistema operativo.

(Heredado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Esta clase se usa para crear procesos de sistema operativo.

(Heredado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Esta clase se usa para crear procesos de sistema operativo.

(Heredado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Esta clase se usa para crear procesos de sistema operativo.

(Heredado de Object)

Métodos de extensión

JavaCast<TResult>(IJavaObject)

Realiza una conversión de tipos comprobados en tiempo de ejecución de Android.

JavaCast<TResult>(IJavaObject)

Esta clase se usa para crear procesos de sistema operativo.

GetJniTypeName(IJavaPeerable)

Esta clase se usa para crear procesos de sistema operativo.

Se aplica a