From 48eb1ffd8f2d83d515770f0d1ca30dbdd48bb358 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 22 Jun 2023 23:11:34 +0900 Subject: [PATCH] printout child proc's out and err to console --- src/net/torvald/terrarum/Principii.java | 38 +++++++++++++++++++------ 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/src/net/torvald/terrarum/Principii.java b/src/net/torvald/terrarum/Principii.java index 63f443876..038560c5b 100644 --- a/src/net/torvald/terrarum/Principii.java +++ b/src/net/torvald/terrarum/Principii.java @@ -1,12 +1,9 @@ package net.torvald.terrarum; import com.badlogic.gdx.utils.JsonValue; -import net.torvald.terrarum.serialise.WriteConfig; import net.torvald.terrarum.utils.JsonFetcher; -import java.io.File; import java.io.IOException; -import java.io.PrintStream; import java.util.HashMap; import java.util.Map; @@ -89,18 +86,41 @@ public class Principii { try { Process proc = Runtime.getRuntime().exec("java"+extracmd+" -Xms1G -Xmx"+xmx+"G -cp ./out/TerrarumBuild.jar net.torvald.terrarum.App"); - // TODO redirect proc's PrintStream to System.out - int size = 0; - byte[] buffer = new byte[1024]; - while ((size = proc.getInputStream().read(buffer)) != -1) { - System.out.write(buffer, 0, size); - } + Thread tp = new Thread(() -> { + String p = null; + while (proc.isAlive()) { + try { + p = proc.inputReader().readLine(); + } + catch (IOException ignored) { + } + if (p != null) System.out.println(p); + } + }); + Thread te = new Thread(() -> { + String e = null; + while (proc.isAlive()) { + try { + e = proc.errorReader().readLine(); + } + catch (IOException ignored) { + } + if (e != null) System.err.println(e); + } + }); + tp.start(); + te.start(); + + System.exit(proc.waitFor()); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } + catch (InterruptedException e) { + throw new RuntimeException(e); + } }