Contenidos
Padre (envía información al proceso hijo y recibe la respuesta del hijo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import java.io.BufferedReader import java.io.InputStreamReader import java.io.OutputStreamWriter fun main() { // Crear el proceso hijo, ruta para IntelliJ val processBuilder = ProcessBuilder("java", "-cp", "/Users/lamac/IdeaProjects/Procesos/out/production/Procesos", "HijoKt") // Cambiar "ChildProcess" por el nombre de la clase principal del proceso hijo val childProcess = processBuilder.start() val outputWriter = OutputStreamWriter(childProcess.outputStream) val childMessage = "Hola desde el proceso padre!" outputWriter.write("$childMessage\n") outputWriter.flush() // Leer la salida del proceso hijo val inputStream = childProcess.inputStream val reader = BufferedReader(InputStreamReader(inputStream)) val outputMessage = reader.readLine() println("Mensaje recibido del proceso hijo: $outputMessage") } |
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
,OutputStreamWriter
para 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 objetoProcessBuilder
con 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/hijo
es la ruta a la clase principal del proceso hijo yHijoKt
es 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
OutputStreamWriter
a 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étodoflush
para asegurarse de que todos los datos se envíen al proceso hijo. - Lectura de la salida del proceso hijo: Se obtiene un
BufferedReader
a partir del flujo de entrada (inputStream
) del proceso hijo. Se lee una línea de la salida del proceso hijo utilizando el métodoreadLine
y 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)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.io.BufferedReader import java.io.InputStreamReader import java.io.OutputStreamWriter fun main() { val inputReader = BufferedReader(InputStreamReader(System.`in`)) val outputWriter = OutputStreamWriter(System.out) val parentMessage = inputReader.readLine() outputWriter.write("$parentMessage"+"SOY HIJO\n") outputWriter.flush() } |
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
, yOutputStreamWriter
para 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
BufferedReader
para 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
OutputStreamWriter
para 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()
delBufferedReader
y 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.