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 27 28 29 30 31 32 33 34 35 |
import java.io.* fun main() { // Crear el proceso hijo, ajusta la ruta según tu entorno val processBuilder = ProcessBuilder("java", "-cp", "/Users/lamac/IdeaProjects/untitled/out/production/untitled", "ChildProcess") val childProcess = processBuilder.start() // Obtener el flujo de entrada y salida del proceso hijo val childInput = BufferedReader(InputStreamReader(childProcess.inputStream)) val childOutput = BufferedWriter(OutputStreamWriter(childProcess.outputStream)) // Enviar mensaje al proceso hijo val messageToChild = "Hola desde el proceso padre!" childOutput.write(messageToChild + "\n") childOutput.flush() println("Mensaje enviado al proceso hijo: $messageToChild") // Leer respuesta del proceso hijo val messageFromChild = childInput.readLine() println("Mensaje recibido del proceso hijo: $messageFromChild") // Segunda ronda de comunicación val secondMessageToChild = "¿Cómo estás?" childOutput.write(secondMessageToChild + "\n") childOutput.flush() println("Mensaje enviado al proceso hijo: $secondMessageToChild") // Leer segunda respuesta del proceso hijo val secondMessageFromChild = childInput.readLine() println("Mensaje recibido del proceso hijo: $secondMessageFromChild") // Finalizar el proceso hijo childProcess.waitFor() println("Proceso hijo finalizado con código de salida: ${childProcess.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 25 26 27 28 29 30 31 32 33 |
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class ChildProcess { public static void main(String[] args) { try { // Obtener la entrada desde el padre BufferedReader parentInput = new BufferedReader(new InputStreamReader(System.in)); OutputStreamWriter parentOutput = new OutputStreamWriter(System.out); // Leer mensaje del padre String messageFromParent = parentInput.readLine(); System.out.println("Mensaje recibido del proceso padre: " + messageFromParent); // Responder al padre String messageToParent = "Hola desde el proceso hijo!"; parentOutput.write(messageToParent + "\n"); parentOutput.flush(); // Leer segundo mensaje del padre String secondMessageFromParent = parentInput.readLine(); System.out.println("Mensaje recibido del proceso padre: " + secondMessageFromParent); // Responder al segundo mensaje String secondMessageToParent = "Estoy bien, gracias!"; parentOutput.write(secondMessageToParent + "\n"); parentOutput.flush(); } catch (Exception e) { e.printStackTrace(); } } } |