Ejecución de procesos
nativos y su comunicación con Java
Al estudiar los mecanismos de para crear
procesos y su comunicación entre
procesos en Unix (Linux) estudiamos fork, 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 crea un
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 le
proceso (salida estándar de éste), escrituras hacia el
proceso (entrada estándar el 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.
Todos las operaciones de io (stdin, stdout, stderr) del proceso 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.