> Java > java지도 시간 > Java에서 'screenrecord'를 실행하면 비디오 파일이 생성되지 않는 이유는 무엇입니까?

Java에서 'screenrecord'를 실행하면 비디오 파일이 생성되지 않는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-09 06:32:02
원래의
689명이 탐색했습니다.

Why Does Executing

Android에서 셸 명령 실행: 실행 문제 해결

"screenrecord --time-limit 10 /sdcard 명령을 실행하려고 할 때 Runtime.getRuntime().exec()를 사용하여 Java 응용 프로그램에서 /MyVideo.mp4"를 실행하면 결과 비디오 파일이 실패합니다. 생성됩니다. 이는 애플리케이션 에뮬레이터 터미널에서 실행할 때 명령이 성공적으로 작동함에도 불구하고 발생합니다.

이 문제의 근본 원인은 Java에서 있는 그대로 명령을 실행하면 현재 사용자 ID(UID)가 명령에 할당된다는 사실에 있습니다. , su 명령으로 부여된 상승된 권한을 사용하는 대신. 결과적으로 파일이 생성되지 않습니다.

해결 방법: 하위 프로세스 I/O 리디렉션

이 문제를 해결하려면 표준 입력을 리디렉션해야 합니다. 실행할 명령에 su 프로세스를 추가합니다. 이렇게 하면 의도된 상승된 권한으로 명령이 실행됩니다.

다음은 이 솔루션을 구현하는 수정된 코드 조각입니다.

try {
    Process su = Runtime.getRuntime().exec("su");
    DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());

    outputStream.writeBytes("screenrecord --time-limit 10 /sdcard/MyVideo.mp4\n");
    outputStream.flush();

    outputStream.writeBytes("exit\n");
    outputStream.flush();
    su.waitFor();
} catch (IOException e) {
    throw new Exception(e);
} catch (InterruptedException e) {
    throw new Exception(e);
}
로그인 후 복사

표준 입력 스트림을 리디렉션하여 "screenrecord" 명령 su 프로세스에서 부여한 상승된 권한으로 효과적으로 실행되어 파일이 성공적으로 생성됩니다.

위 내용은 Java에서 'screenrecord'를 실행하면 비디오 파일이 생성되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿