Clase de Runtime de Java proporciona acceso al entorno de ejecución en el que se ejecuta la aplicación . Métodos exec de tiempo de ejecución permiten ejecutar programas externos desde una aplicación Java. Ejecución de aplicaciones externas dentro de una aplicación Java le permite abrir una página web en un navegador, interactuar con utilidades del sistema operativo o de lanzar una ventana de la consola . Obtener el entorno de ejecución de
Todas las aplicaciones Java tienen una instancia del entorno de ejecución. Utilice el método getRuntime () de ejecución para acceder a este objeto. Por ejemplo :
Runtime rt = Runtime.getRuntime ();
Ejecutar una aplicación externa
Runtime ofrece varias maneras de llamar al método exec , que devuelve un objeto del proceso. La forma más sencilla de ejecutar una aplicación externa es el método Runtime exec ( comando String) , donde " comando" es la línea de comandos que se ejecuta la aplicación. La llamada siguiente ejecuta el comando "ls " para obtener un listado de directorio para el directorio root en un sistema Linux o Unix :
Process p = rt.exec ( "ls /") ;
el método exec también puede ser llamado con una matriz que contiene el comando y sus argumentos , la configuración de las variables de entorno y el directorio de trabajo .
Obtener información de procesos
el Proceso clase da acceso a la corriente de entrada, corriente de salida , corriente de error y el valor de salida del proceso ejecutado .
el método Process.getInputStream proporciona acceso a flujo de salida estándar del proceso "a través de flujo de entrada de la aplicación. La corriente debe ser amortiguada . Continuando con el ejemplo anterior, el código se accede a la salida de los " ls /" impresiones de comandos fuera de los resultados
InputStream istrm = p.getInputStream ( ) . InputStreamReader istrmrdr = new InputStreamReader ( istrm ) ; BufferedReader buffrdr = nueva BufferedReader ( istrmrdr ) ;
datos de cadena
; while (( data = buffrdr.readLine ()) = null ) { System.out.println (data) ;}
mismo modo, puede capturar la secuencia de error mediante el uso de getErrorStream Proceso ' y el uso de un flujo de entrada de buffer para manejar los datos. La aplicación también puede enviar datos al flujo de entrada del proceso "a través de flujo de salida de la aplicación. Utilice "método getOutputStream y amortiguar el flujo de salida.
Salir
Capturar el valor de salida del proceso utilizando Process Proceso exitValue método para determinar si se terminó normalmente . Asegúrese de que el proceso ha terminado con el método waitFor Process "para hacer que el subproceso actual que esperar a que el proceso termine . Por ejemplo , capturar el valor de salida en una variable, que puede ser utilizado más tarde para tomar decisiones acerca de cómo se procederá a su aplicación :
int ev = 0 ; if (! P.waitFor () = 0 ) { ev = p.exitValue () ;}
Un proceso puede ser asesinado con Process ' destruir método
Consideraciones
Java 5 introdujo la clase ProcessBuilder a reemplazar Runtime.exec . ProcessBuilder hace que sea más fácil de personalizar el proceso, y proporciona un mejor control de iniciar el proceso.
Advertencias
Una de las características principales del lenguaje de programación Java es su portabilidad a múltiples plataformas de computación . Llamar a los procesos externos que son específicas de un sistema operativo en particular mantiene su solicitud de ser portátil. Evite el uso de Runtime.exec cuando existe un método para lograr el mismo objetivo en el lenguaje Java.