Ejecución de procesos
nativos y su comunicación con Java
Al estudiar los mecanismos para crear
procesos y su comunicación entre
procesos en Unix (Linux) estudiamos fork y pipes entre otros. Java
también dispone de mecanismos para correr procesos nativos y
relacionarse con ellos.
La clase RunTime dispone del método exec, el cual permite ejecutar un
programa cualquiera disponible en la máquina (proceso nativo) y retorna
una instancia de una subclase de Process.
Ésta puede ser usada para controlar el proceso y obtener
información sobre éste.
La clase Process provee métodos para hacer lecturas desde el
proceso (salida estándar de éste), escrituras hacia el
proceso (entrada estándar del proceso), esperar por el
término del proceso, y destruir (kill) el proceso.
Para más detalles ver página
descriptiva de la clase RunTime, y la documentación
de la clase Process.
Todas las operaciones de io (stdin, stdout, stderr) del proceso creado con método exec son
redirigidas al proceso padre a través de tres flujos
(Process.getOutputStream(), Process.getInputStream(),
Process.getErrorStream()).
JavaPing es un
ejemplo donde invocamos al comando ping desde Java. La salida
estándar del ping es mostrada por pantalla por Java. Análogamente
podemos hacer uso de cualquier servicio disponible en la máquina
vía io estándar.