ProcessBuilder에서 생성 된 하나의 프로세스 출력을 다른 ProcessBuilder에서 생성 된 다른 프로세스로 전달할 수 있습니까? 예를 들어,이 셸 명령을 실행하려고하는 경우 :ProcessBuilder에서 다른 ProcessBuilder로 파이핑 출력
ls | grep build.xml
ProcessBuilder는 어떻게해야합니까?
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);
하지만 다른 결과 내가 쉘에서 직접 스크립트를 실행할 때와 비교 생산 : @erdinc이 제안
, 나는이 시도. 나는 어디에서 잘못 했는가? 해결
는 : 같은 매개 변수 두 번째 프로세스를 전달보다 당신이는 getInputStream 방법을 사용할 수 있습니다 필립 웬 들러 솔루션
귀하의 솔루션이 작동합니다! 감사합니다 Philipp : D 저는 실제로이 코드를 사용하여 chasen 및 moses (기계 번역 도구)와 같은 여러 외부 응용 프로그램을 호출합니다. ls | grep 예제는 질문을 단순화하기위한 것이었지만 제안에 감사드립니다. D 해결 된 질문을 표시하고 솔루션을 upvote합니다. – ndriks