java - ProcessBuilder redirigido a salida estándar
redirect stream (2)
Perdió una pieza clave, realmente necesita comenzar su proceso y esperar su salida. Creo que esto funcionará
processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
// Start the process.
try {
Process p = processBuilder.start();
// wait for termination.
p.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
Me gustaría redirigir una salida de proceso de Java hacia la salida estándar del proceso java padre.
Usando la clase ProcessBuilder de la siguiente manera:
public static void main(String[] args) {
ProcessBuilder processBuilder = new ProcessBuilder("cmd");
processBuilder.directory(new File("C:"));
processBuilder.redirectErrorStream(true); // redirect error stream to output stream
processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
}
Hubiera esperado que las salidas de "cmd", que son como:
Microsoft Windows [versión 6.1.7601] Copyright (c) 2009 Microsoft Corporation. Tous droits réservés.
se muestran en la consola DOS utilizada para ejecutar el programa java. Pero nada se muestra en absoluto en la consola de DOS.
En los otros hilos de discusión, vi soluciones usando una clase BufferedReader: pero aquí me gustaría que las salidas del proceso se muestren directamente en la salida estándar, sin usar ningún BufferedReader o "mientras se lee el bucle". ¿Es posible?
Gracias.
Pruebe ProcessBuilder.inheritIO()
para usar la misma E / S que el proceso de Java actual. Además, puede conectar en cadena los métodos:
ProcessBuilder pb = new ProcessBuilder("cmd")
.inheritIO()
.directory(new File("C:"));
pb.start();