[Android 개발 에서 흔히 볼 수 있 는 문제 - 4] RunTime. exec () 는 루트 권한 으로 여러 명령 을 어떻게 수행 합 니까?

RunTime. exec () 이 인 터 페 이 스 는 우리 개발 자 에 게 바 텀 운영 체 제 를 직관 적 으로 조작 할 수 있 는 기 회 를 제공 했다 고 할 수 있 지만 이 인터페이스의 사용 에는 아직도 주의해 야 할 문제 가 많다.이 인 터 페 이 스 를 완전 하 게 소개 하려 면 비교적 큰 지면 이 필요 하기 때문에 저 는 여기 서 한 가지 만 을 대상 으로 '루트 권한 으로 여러 가지 명령 을 수행 하 는 방법' 을 소개 합 니 다.
1. 여기 서 먼저 루트 권한 을 직면 합 니 다. 이 는 핸드폰 을 루트 로 해 야 합 니 다. 구체 적 인 방법 은 360 원 키 루트 를 통 해 해결 할 수 있 습 니 다.
2. 이 코드 부터 살 펴 보 자.
4. 567913. 여기 서 su 를 실행 하 는 것 은 시스템 에 루트 권한 을 요청 하 는 것 이 고 proc 는 su 를 실행 하 는 이 독립 프로 세 스 를 되 돌려 줍 니 다.
다음은 cmd 1 과 cmd 2 를 살 펴 보 겠 습 니 다. 이 두 명령 모두 루트 권한 이 필요 하 다 고 가정 하면 상기 방법 으로 쓰 면 cmd 1 과 cmd 2 에 permission denied 가 나타 납 니 다.
왜 그 럴 까요?
su 명령 은 현재 프로 세 스 로 하여 금 루트 권한 을 얻 게 할 뿐, 즉 proc 로 하여 금 루트 권한 을 얻 게 할 뿐, 전체 응용 프로그램 이 루트 권한 을 가지 게 하 는 것 이 아니 라, 뒤에 cmd 1 과 cmd 2 가 runtime. exec 를 진행 할 때 각각 하나의 독립 된 프로 세 스 에 존재 하기 때문에 루트 권한 을 갖 추 지 않 습 니 다.
그럼 어떻게 해결 해 야 되 지?내리 보다
3. 모든 명령 을 하나의 프로 세 스에 두 기
4. 567913. 저 는 상기 코드 를 기 쁘 게 실 행 했 습 니 다. 먼저 저 는 'cmd a, cmd b, cmd c' 와 같은 쓰기 가 정확 하고 runtime ('cd/mnt, ls - l') 과 같은 테스트 를 통 해 실 행 될 수 있다 는 것 을 알 게 되 었 습 니 다.
그러나 상기 코드 가 실 행 된 후에 끊 겼 습 니 다. 프로 세 스 가 끊 긴 것 같 습 니 다. 개인 적 으로 su 명령 의 문제 라 고 생각 하지만 정확 한 원인 은 아직 밝 혀 지지 않 았 습 니 다. 여기 서 어떤 큰 소 가 이 유 를 알 고 싶 은 지 알려 주 십시오. 먼저 감 사 드 립 니 다!
4. 계속 탐색
proc 라 는 프로 세 스 가 루트 권한 을 가지 고 있 는 이상 우 리 는 이 스 레 드 전제 에서 어떻게 조작 을 하 는 지 방법 을 생각해 야 합 니 다. 조 회 를 통 해 마침내 구 한 진경 은 다음 과 같 습 니 다.
4. 567913. 여기 서 cmd 1 과 cmd 2 뒤의 '' '는 없어 서 는 안 될 것 입 니 다. DataOutputStream 이라는 인 터 페 이 스 는 바 텀 셸 을 직접 조작 할 수 없 기 때문에' '' 명령 의 끝 을 표시 해 야 합 니 다.
오케이, 해결.
원 하 는 운영 체제 의 쾌감 을 만 끽 하 세 요 ~

좋은 웹페이지 즐겨찾기