Padre
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import java.io.BufferedReader import java.io.InputStreamReader import java.io.OutputStreamWriter fun main() { // Crear el proceso hijo val processBuilder = ProcessBuilder("java", "-cp", "/Users/lamac/IdeaProjects/Procesos/out/production/Procesos/", "ContarKt") // Cambiar "ChildProcess" por el nombre de la clase principal del proceso hijo val process = processBuilder.start() val outputWriter = OutputStreamWriter(process.outputStream) val inputChild = BufferedReader(InputStreamReader(process.inputStream)) val words = listOf("example", "hello", "world", "process", "communication") for (word in words) { // Enviar una palabra al proceso hijo outputWriter.write("$word\n") outputWriter.flush() val responseMessage = inputChild.readLine() println("Mensaje recibido del proceso hijo para la palabra '$word': $responseMessage") } process.waitFor() println("Proceso hijo finalizado con código de salida: ${process.exitValue()}") } |
Hijo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
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) while (true) { val word = inputReader.readLine() // Comprobar si se ha recibido una palabra válida if (word == null || word.isEmpty()) { break } // Contar el número de letras en la palabra val letterCount = word.length // Enviar el número de letras al proceso padre outputWriter.write("$letterCount\n") outputWriter.flush() } } |