ProcessBuilder Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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.dir
del 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 true
en , 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 |
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 |
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. |