27 import java.io.InputStream; 28 import java.io.OutputStream; 29 import java.io.PrintStream; 30 import java.lang.management.ManagementFactory; 31 import java.lang.management.RuntimeMXBean; 32 import java.lang.reflect.Field; 33 import java.lang.reflect.Method; 34 import java.util.ArrayList; 35 import java.util.Arrays; 36 import java.util.Collections; 37 import java.util.concurrent.CountDownLatch; 38 import java.util.Map; 39 import java.util.concurrent.ExecutionException; 40 import java.util.concurrent.Future; 41 import java.util.concurrent.TimeUnit; 42 import java.util.concurrent.TimeoutException; 43 import java.util.function.Predicate; 44 import java.util.function.Consumer; 45 import java.util.stream.Collectors; 46 47 import sun.management.VMManagement; 48 49 public final class ProcessTools { 50 private static final class LineForwarder extends StreamPumper.LinePump { 51 private final PrintStream ps; 52 private final String prefix; 53 LineForwarder(String prefix, PrintStream os) { 54 this.ps = os; 55 this.prefix = prefix; 56 } 57 @Override 58 protected void processLine(String line) { 59 ps.println("[" + prefix + "] " + line); 60 } 61 } 62 63 private ProcessTools() { 64 } 65 66 /** 67 * <p>Starts a process from its builder.</p> 68 * <span>The default redirects of STDOUT and STDERR are started</span> | 27 import java.io.InputStream; 28 import java.io.OutputStream; 29 import java.io.PrintStream; 30 import java.lang.management.ManagementFactory; 31 import java.lang.management.RuntimeMXBean; 32 import java.lang.reflect.Field; 33 import java.lang.reflect.Method; 34 import java.util.ArrayList; 35 import java.util.Arrays; 36 import java.util.Collections; 37 import java.util.concurrent.CountDownLatch; 38 import java.util.Map; 39 import java.util.concurrent.ExecutionException; 40 import java.util.concurrent.Future; 41 import java.util.concurrent.TimeUnit; 42 import java.util.concurrent.TimeoutException; 43 import java.util.function.Predicate; 44 import java.util.function.Consumer; 45 import java.util.stream.Collectors; 46 47 public final class ProcessTools { 48 private static final class LineForwarder extends StreamPumper.LinePump { 49 private final PrintStream ps; 50 private final String prefix; 51 LineForwarder(String prefix, PrintStream os) { 52 this.ps = os; 53 this.prefix = prefix; 54 } 55 @Override 56 protected void processLine(String line) { 57 ps.println("[" + prefix + "] " + line); 58 } 59 } 60 61 private ProcessTools() { 62 } 63 64 /** 65 * <p>Starts a process from its builder.</p> 66 * <span>The default redirects of STDOUT and STDERR are started</span> |