È possibile passare l'output di un processo creato da ProcessBuilder a un altro processo creato da un altro ProcessBuilder? Per esempio, se sto cercando di eseguire questo comando shell:output piping di ProcessBuilder su un altro ProcessBuilder
ls | grep build.xml
come devo fare con ProcessBuilder?
come @erdinc suggerito, ho provato questo:
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);
ma produce risultati diversi confrontare quando si esegue lo script direttamente nel guscio. Dove ho sbagliato?
Risolto: Si prega di vedere la soluzione di Philipp Wendler
la tua soluzione funziona! grazie Philipp: D In realtà userò questo codice per chiamare diverse applicazioni esterne come chasen e moses (strumenti di traduzione automatica). Ls | L'esempio di grep è stato pensato solo per semplificare la domanda, ma grazie per il suggerimento: D Contrassegnerò la domanda risolta e sostituirò la tua soluzione. – ndriks