Java 런타임을 사용하여 리디렉션된 출력으로 쉘 스크립트 실행
Java의 Runtime.exec() 메소드로 쉘 스크립트를 실행하려고 하면 출력이 리디렉션이 의도한 대로 작동하지 않을 수 있습니다. 이 문제는 리디렉션 연산자 >>
문제:
Process p = Runtime.getRuntime().exec("sh somescript.sh >> out.txt");
스크립트가 성공적으로 실행되었음에도 불구하고 출력이 지정된 파일로 리디렉션되지 않고 파일 자체가 생성되지 않은 상태로 유지됩니다.
해결책:
출력을 효과적으로 리디렉션하려면 Java의 ProcessBuilder 클래스를 활용해야 합니다.
ProcessBuilder builder = new ProcessBuilder("sh", "somescript.sh"); builder.redirectOutput(new File("out.txt")); builder.redirectError(new File("out.txt")); Process p = builder.start(); // may throw IOException
설명:
ProcessBuilder를 활용하면 stdout 및 stderr 스트림의 리디렉션을 독립적으로 구성할 수 있습니다. RedirectOutput() 및 RedirectError() 메서드를 사용하면 출력 리디렉션을 위한 파일을 지정할 수 있습니다.
"out.txt" 파일이 없으면 자동으로 생성됩니다. 이미 존재하는 경우 기존 내용을 덮어쓰게 됩니다.
위 내용은 Java의 런타임을 사용하여 쉘 스크립트를 실행할 때 출력을 효과적으로 리디렉션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!