Java 런타임에서 쉘 동작 조작
Java의 Runtime.exec(String) 유틸리티를 사용할 때 특정 쉘 명령 실행 간에 불일치가 발생할 수 있습니다. 이러한 이상 현상을 이해하려면 셸 작업의 메커니즘을 자세히 조사해야 합니다.
셸 책임 이해
셸은 다음을 포함하여 명령 실행을 지원하는 중요한 작업을 수행합니다.
처형사유 실패
Runtime.exec(String)을 통해 호출할 때 쉘 종속 명령이 실패할 수 있는 이유:
해결 방법
간단하지만 불완전함:
Runtime.exec(String[]) 및 사용 쉘 인터프리터에 명령을 전달하면 직접 명령이 가능합니다 실행:
String myFile = "some filename.txt"; String myCommand = "cp -R '" + myFile + "' $HOME 2> errorlog"; Runtime.getRuntime().exec(new String[] { "bash", "-c", myCommand });
강력하고 안전함:
보안과 견고성을 높이려면 ProcessBuilder를 사용하여 셸 책임을 명시적으로 처리하세요.
String myFile = "some filename.txt"; ProcessBuilder builder = new ProcessBuilder( "cp", "-R", myFile, System.getenv("HOME")); builder.redirectError(ProcessBuilder.Redirect.to(new File("errorlog"))); builder.start();
위 내용은 Java 런타임으로 쉘 명령을 어떻게 안정적으로 실행할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!