Ejecutando un programa java desde otro programa java

Estoy trabajando en un programa de Java simple. Simplemente compila y ejecuta otro programa java. Estoy usando la función Runtime.exec () para compilar y ejecutar. No hay problema con la compilación. pero cuando se ejecuta, si el segundo programa necesita una entrada para leer desde el teclado, no puedo darlo desde el proceso maestro. Utilicé la función getOutputStream (). pero no pudo ayudar. Voy a proporcionar mi código.

public class sam {  
    public static void main(String[] args) throws Exception {  
        try { 
             Process p = Runtime.getRuntime().exec("javac sam2.java");
             Process p2 = Runtime.getRuntime().exec("java sam2");
             BufferedReader in = new BufferedReader(  
                                new InputStreamReader(p2.getInputStream()));

             OutputStream out = p.getOutputStream();
             String line = null; 
             line = in.readLine();
             System.out.println(line);
             input=input+"\n";
             out.write(input.getBytes());
             p.wait(10000);
             out.flush();
        }catch (IOException e) {  
             e.printStackTrace();  
        }  
    }  
}  

Este es mi programa maestro (sam.java).

El siguiente es el código de sam2.java.

public class sam2 {  
public static void main(String[] args) throws Exception {  

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String str; 
    System.out.println("Enter the number..\n");
    str = br.readLine(); 
    System.out.println(Integer.parseInt(str));

    }  
}  

No hay problema, si mi segundo programa solo tiene estados de impresión. Pero el problema surge cuando tengo que leer algo del otro.

Respuestas a la pregunta(5)

Su respuesta a la pregunta