다음 코드는 STDERR 및 STDOUT에 쓰는 perl 스크립트를 호출합니다. 필자는 perl 스크립트에서 STDOUT 및 STDERR을 자동으로 플러시하고 streamgobbler 스레드를 사용하는 것과 같은 권장 절차를 수행했습니다. 나는이 문제를 어느정도는 돕기 위해 이것을 보았다. 그러나 펄 스크립트가 많은 양의 출력을 생성하는 곳에서는 파이프를 채우고 멈춰 버리는 경우가있다. 유일하게이 것을 멈추는 것처럼 보이지만 다음과 같이 펄 스크립트에 다음을 추가하는 것은 당연히 출력을 원한다. 그래서 이것은 옵션이 아니다.java doesnt는 필자의 perl 출력 파이프 라인을 읽는 것으로 보입니다.
갱신 >>
나는 고양이가 리눅스에서/proc 디렉토리/PID/FD/파이프 # 그것은 파이프가 액세스 할 수 읽을 수됩니다 때 또 다른 흥미로운 선두로부터입니다. 이것은 내 perl 프로세스가 다시 쓰고 따라서 완료한다는 것을 의미하는 파이프 내용을 덤프하는 것처럼 보입니다. 따라서 내 Java 프로세스가 프로세스 출력 스트림을 제대로 읽지 못하고 있어야합니다.
PERL :
close STDOUT
close STDERR
내 자바 StreamGobbler는 이에 다음
parserProcess = run.exec(config.getCMDArray(),env);
StreamGobbler errorGobbler = new StreamGobbler(parserProcess.getErrorStream(), "ERROR");
// any output?
StreamGobbler outputGobbler = new StreamGobbler(parserProcess.getInputStream(), "OUTPUT");
// kick them off
errorGobbler.start();
outputGobbler.start();
처럼 보인다 - 사전
모든 Perl 스크립트가 STDOUT과 STDERR을 모두 닫는다면 그 사실을 알 수 있습니다.) Perl 스크립트에서도 수행 할 수있는 것을 게시 할 수 있습니까? – mfontani