Realizar una comunicación entre dos procesos en Kotlin (un proceso envía información a otro proceso y el otro proceso responde)
Padre (envía información al proceso hijo y recibe la respuesta del hijo)
[crayon-6a6196aad909c729135633/]
Este código en Kotlin crea un proceso hijo utilizando la clase ProcessBuilder, envía un mensaje al proceso hijo a través de su flujo de salida estándar y lee la respuesta del proceso hijo desde su flujo de entrada estándar. Aquí está la explicación línea por línea:
- Importaciones de clases necesarias: Se importan las clases
BufferedReader,InputStreamReader,OutputStreamWriterpara manejar las operaciones de entrada y salida del proceso hijo. - Función principal
main: Se define la funciónmain, que es el punto de entrada del programa. - Creación del
ProcessBuilder: Se crea un objetoProcessBuildercon los parámetros necesarios para ejecutar el proceso hijo. En este caso, el comando a ejecutar esjava -cp /ruta/a/la/clase/principal/del/proceso/hijo HijoKt, donde/ruta/a/la/clase/principal/del/proceso/hijoes la ruta a la clase principal del proceso hijo yHijoKtes el nombre de la clase principal del proceso hijo. - Inicio del proceso hijo: Se inicia el proceso hijo utilizando el
ProcessBuilder. - Escritura en el flujo de salida del proceso hijo: Se obtiene un
OutputStreamWritera partir del flujo de salida (outputStream) del proceso hijo. Se escribe un mensaje en el flujo de salida del proceso hijo utilizando el métodowrite, seguido de un salto de línea (\n). Se llama al métodoflushpara asegurarse de que todos los datos se envíen al proceso hijo. - Lectura de la salida del proceso hijo: Se obtiene un
BufferedReadera partir del flujo de entrada (inputStream) del proceso hijo. Se lee una línea de la salida del proceso hijo utilizando el métodoreadLiney se almacena en la variableoutputMessage. - Impresión del mensaje recibido: Se imprime el mensaje recibido del proceso hijo en la consola.
Hijo (el hijo recibe el mensaje del padre y responde al padre)
[crayon-6a6196aad90a2322925332/]
Este código en Kotlin lee una entrada del usuario desde la consola, agrega un mensaje adicional y luego escribe el resultado en la salida estándar. Aquí está la explicación línea por línea:
- Importaciones de clases necesarias: Se importan las clases
BufferedReader,InputStreamReader, yOutputStreamWriterpara manejar las operaciones de entrada y salida. - Función principal
main: Se define la funciónmain, que es el punto de entrada del programa. - Creación del lector de entrada: Se crea un objeto
BufferedReaderpara leer la entrada del usuario desde la consola (System.in). Esto permite al usuario ingresar datos desde la consola. - Creación del escritor de salida: Se crea un objeto
OutputStreamWriterpara escribir en la salida estándar (System.out). Esto permite escribir en la consola. - Lectura de la entrada del usuario: Se lee una línea de entrada del usuario utilizando el método
readLine()delBufferedReadery se almacena en la variableparentMessage. - Escritura en la salida estándar: Se escribe en la salida estándar una concatenación del mensaje del usuario y la cadena «SOY HIJO», utilizando el método
write()delOutputStreamWriter. Se llama al métodoflush()para asegurarse de que todos los datos se envíen a la salida estándar.
En resumen, este código espera que el usuario ingrese una línea de texto desde la consola, luego agrega la cadena «SOY HIJO» al final de esa línea y la imprime de vuelta en la consola. Esto ilustra cómo interactuar con la entrada y salida estándar en un programa Kotlin.