Я перезапускаю дочерний процесс каждый раз, чем мне нужно получить случайное число, но я думаю, что это можно сделать с помощью outPutStream, но я не знаю, как это сделать. Я видел остальных, но я не нашел ничего подходящего для моей проблемы. Я не хочу использовать сокеты.
Основной процесс.
public class ejercicio7 {
public static void main(String [] args){
boolean cerrado = false;
try {
while(!cerrado){
String entrada = JOptionPane.showInputDialog(null, "Introduce una entrada");
Process proceso = Runtime.getRuntime().exec("java -jar C:\\Users\\Cristian\\Desktop\\java\\numeros.jar \"" + entrada+"\"");
BufferedReader br = new BufferedReader(new InputStreamReader(proceso.getInputStream()));
String texto;
while((texto = br.readLine()) !=null){
if(Boolean.parseBoolean(texto)){
cerrado = true;
}else{
System.out.println(texto);
}
}
br.close();
proceso.destroy();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Детский процесс.
public static void main(String[] args) {
if(args.length <=0 && args[0].length() == 0){
System.out.println("No se ha introducido una entrada");
}else{
if(!args[0].equalsIgnoreCase("fin")){
System.out.println(Math.round(Math.random() * 10));
}else{
System.out.println("true");
}
}
}
}
Сделайте ваш дочерний процесс обработкой входного потока:
public static void main(String[] args) throws Exception {
String line;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));
while (!"fin".equals(line = reader.readLine())) {
System.out.println(line);
}
System.out.println("buy");
}
Затем в основном процессе вы можете отправлять сообщения дочернему процессу:
Process proceso = Runtime.getRuntime().exec("java -jar C:\\Users\\Cristian\\Desktop\\java\\numeros.jar");
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(proceso.getOutputStream()));
BufferedReader in = new BufferedReader(new InputStreamReader(proceso.getInputStream()));
String texto;
out.write(entrada + "\n");
out.flush();
while((texto = in.readLine()) !=null){
...
BufferedWriter bw1 = new BufferedWriter(new OutputStreamWriter(proceso.getOutputStream())); bw1.write("asdasd");
Дочерний BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in,"UTF-8"));
: BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in,"UTF-8"));