찾다

 >  Q&A  >  본문

"출력 리디렉션을 위해 ProcessBuilder 사용"

<p>다음 코드를 사용하여 ProcessBuilder가 시작한 프로세스의 출력을 리디렉션하려고 합니다. </p> <pre class="brush:php;toolbar:false;">ProcessBuilder pb = new ProcessBuilder("/myScript >> /myLogFile 2>&1 <& - &"); Map env = pb.environment(); env.clear(); env.put("var1", "val1"); env.put("var2", "val2"); pb.redirectErrorStream(true); 프로세스 p = pb.start();</pre> <p>그러나 실패하여 예외가 발생했습니다: </p> <인용문> <p>스레드 "main"에서 예외가 발생했습니다. java.io.IOException: 실행할 수 없습니다. 프로그램 "/myScript>> /my로그파일 2>&1 <& - &": java.io.IOException: 오류=2, 해당 파일이나 디렉터리가 없습니다. java.lang.ProcessBuilder.start(ProcessBuilder.java:460)</p> </인용문> <p>"/myScript"만 전달하면 제대로 작동합니다. </p> <p>스크립트는 Perl입니다. 실패 이유에 대한 제안/의견이 있으신가요? </p> <p><code>new ProcessBuilder("/myScript",">>","/myLogFile")</code>와 같은 별도의 매개변수로 전달하려고 시도했지만 작동했지만 다음으로 리디렉션되지 않습니다. 로그 파일도 허용되지 않으며 envVar도 허용되지 않습니다. </p>
P粉517090748P粉517090748482일 전458

모든 응답(2)나는 대답할 것이다

  • P粉204079743

    P粉2040797432023-08-25 10:53:05

    귀하의 요구 사항에 따라 Java7부터 계속해서 ProcessBuilder를 사용할 수 있습니다. 실행 파일을 매개변수로 전달하고 ProcessBuilder 클래스에서 redirectInput()redirectOutput()redirectError()를 사용하여 출력 스트림을 리디렉션/가로채기를 할 수 있습니다.

    회신하다
    0
  • P粉818088880

    P粉8180888802023-08-25 10:07:03

    Shell 리디렉션 연산자는 ProcessBuilder中是未知的。将您的命令放在一个shell脚本中并执行它,如这里所示。或者,使用bash -c여기에 표시된 대로 에 있습니다.

    회신하다
    0
  • 취소회신하다