나는 뿌리 박은 Sony xperia z (인조 인간 4.4.2의 건축업자 10.5.A.0.230)에 작동 할 필요가있는 app를 쓰고있다. 응용 프로그램은뿌리깊은 전화 번호부에 전화 번호부에 일관성없는 접근
long sysfilenum(String str)
{
String text = null;
try
{
File file = new File(str);
BufferedReader br = new BufferedReader(new FileReader(file));
text = br.readLine();
}
catch (IOException e)
{
e.printStackTrace();
}
return Long.valueOf(text);
}
이 기능은 한 번 당 실행됩니다 ... 아래의 기능에 ... ... 다음 문자열 중 하나를 전달하여
"/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq"
"/sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq"
"/sys/devices/system/cpu/cpu2/cpufreq/scaling_cur_freq"
"/sys/devices/system/cpu/cpu3/cpufreq/scaling_cur_freq"
를 4 개 개의 코어의 코어 속도를 읽고 초 :
이 모든 것이 완벽하게 작동합니다. 내 애플 리케이션에 번호를 표시하고, 그들이 예상대로 정확하게 행동하는 것을 볼 수 있습니다. 코어 속도는 종종 서로 다르며, 코어가 너무 많이 가열되면 (CPU 온도도 읽음) 속도가 감소합니다. 따라서이 번호가 올바르게 읽혀지고 있다고 확신합니다.
이제 신비가 시작됩니다. 내 장치에 adb 셸을 여는 경우 첫 번째 명령으로 "su"를 입력하십시오. 문제없이 "/ sys/devices/system/cpu/cpu0/cpufreq /"디렉토리로 이동할 수 있습니다. 그러나 코어 1, 2 또는 3에 대한 디렉토리로 이동하려고하면 "No such file or directory"가 표시됩니다. 나는 당황 스럽다.
편집 : 난 그냥 장치 자체에서 실행되는 터미널 에뮬레이터를 사용하여 테스트, 그리고 수 액세스 모든 코어에 대한 디렉토리를 발견했다. 그래서 adb 쉘은 이상하게 행동합니다.
편집 : 나는 단지 su -c "ls cpu1/cpufreq/"
을 시도했는데 성공했다. 나는 cpu1 디렉토리를 보았다. 그래서 adb 쉘 에 su를 입력하면 수퍼 유저 액세스 권한을 부여하지 않았습니까?
편집 : OMG! 방금 su -c "ls cpu1/cpufreq/"
을 실행하여 가끔씩 (예 : 디렉토리 목록을 보았습니다) 가끔씩 (예 : 그런 파일이나 디렉토리가 없습니다.) 발견했습니다.
편집 : : this document에 따르면,이 디렉토리가 가상을 것으로 나타납니다. 한 지점에서 그것은 "cd/sys/devices/system/cpu # 장치 드라이버가 볼 수있는 가상 디렉토리"라고 말합니다. ". 음, 어쩌면 장치 드라이버를 망쳤나요?
루트 액세스는 Java 코드 나 응용 프로그램 프로세스의 어떤 것에도 적용되지 않으므로 목표와 관련이 없습니다./sys에서 변경 한 내용은 재부팅 할 때 수정해야합니다. –