¿Es posible pasar la salida de un proceso creado por ProcessBuilder a otro proceso creado por otro ProcessBuilder? Por ejemplo, si estoy tratando de ejecutar este comando shell:salida de tubería de ProcessBuilder a otro ProcessBuilder
ls | grep build.xml
cómo debería hacerlo con ProcessBuilder?
como @erdinc sugirió, he intentado esto:
Process process = Runtime.getRuntime().exec("ls");
InputStream is = process.getInputStream();
byte[] buf = new byte[1000];
is.read(buf);
String parameter = new String(buf);
System.out.println("grep build " + parameter);
Process proc2 = Runtime.getRuntime().exec("grep build " + parameter);
InputStream is2 = proc2.getInputStream();
byte[] buf2 = new byte[1000];
is2.read(buf2);
String result = new String(buf2);
System.out.println("proc2 result: " + result);
pero produce diferentes resultados en comparación con cuando corro el guión directamente en la cáscara. ¿Dónde hice mal?
Resuelto: Por favor ver la solución Philipp Wendler
¡su solución funciona! gracias Philipp: D De hecho, utilizaré este código para llamar a varias aplicaciones externas, como chasen y moses (herramientas de traducción automática). El ls | El ejemplo de grep solo pretendía simplificar la pregunta, pero gracias por la sugerencia: D Voy a marcar la pregunta resuelta y recomiendo su solución. – ndriks