"출력 리디렉션을 위해 ProcessBuilder 사용"
P粉517090748
P粉517090748 2023-08-24 20:26:08
0
2
414
<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粉517090748
P粉517090748

모든 응답(2)
P粉204079743

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

P粉818088880

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!