草庐IT

android - 对 root 手机上的目录的访问不一致

coder 2023-12-14 原文

我正在编写一个应用程序,需要在已获得 root 权限的 Sony xperia z(Android 4.4.2,内部版本号 10.5.A.0.230)上运行。该应用程序通过传递以下字符串之一来读取四个内核的内核速度...

"/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"

...到下面的函数...

   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);
    }

这个函数每秒执行一次:

这一切都很完美。我在我的应用程序中显示数字,我发现它们的行为与我预期的完全一样。核心速度通常彼此不同,当核心过热时(我也读取了 CPU 温度),速度会降低。所以我相信这些数字被正确读取了。

现在这就是谜团开始的地方。如果我为我的设备打开一个 adb shell,然后输入“su”作为我的第一个命令。我可以毫无问题地导航到“/sys/devices/system/cpu/cpu0/cpufreq/”目录。但是如果我尝试导航到核心 1,2 或 3 的目录,我会得到“没有这样的文件或目录”。我很困惑。

编辑:我刚刚使用在设备本身上运行的终端仿真器进行了测试,发现我可以访问所有内核的目录。所以它的 adb shell 行为异常。

编辑: 凭直觉我尝试了 su -c "ls cpu1/cpufreq/" 并且成功了,我看到了 cpu1 目录。所以也许在 adb shell 中输入 su 没有给我 super 用户访问权限?

编辑:天哪!我只是一遍又一遍地执行 su -c "ls cpu1/cpufreq/" 发现有时它有效(即我看到了目录列表)有时它没有(即我没有这样的文件或目录)!

编辑::根据this document , 这些目录似乎是虚拟的。有一次它说“cd/sys/devices/system/cpu # 设备驱动程序可见的虚拟目录”。嗯,也许我搞砸了设备驱动程序?

最佳答案

您看到目录消失的原因是cpu hotplugging。这是 linux 内核功能,它允许操作系统禁用 cpu 上的特定内核以节省电量。默认的 Android 内核设计为在系统负载过高时禁用几乎所有手机上的核心 1-3 以致于计算不需要它们。当这些核心被禁用时,相应的目录也会被删除。

因此,您可以推断,如果该目录存在,则内核正在以指定频率运行。如果不存在,则内核被禁用,因此没有频率。

关于android - 对 root 手机上的目录的访问不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26973590/

有关android - 对 root 手机上的目录的访问不一致的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  3. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  4. ruby-on-rails - active_admin 目录中的常量警告重新声明 - 2

    我正在使用active_admin,我在Rails3应用程序的应用程序中有一个目录管理,其中包含模型和页面的声明。时不时地我也有一个类,当那个类有一个常量时,就像这样:classFooBAR="bar"end然后,我在每个必须在我的Rails应用程序中重新加载一些代码的请求中收到此警告:/Users/pupeno/helloworld/app/admin/billing.rb:12:warning:alreadyinitializedconstantBAR知道发生了什么以及如何避免这些警告吗? 最佳答案 在纯Ruby中:classA

  5. ruby-on-rails - 如何在 Gem 中获取 Rails 应用程序的根目录 - 2

    是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在

  6. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  7. ruby - Ruby gsub 替换中的行为不一致? - 2

    两个gsub产生不同的结果。谁能解释一下为什么?代码也可在https://gist.github.com/franklsf95/6c0f8938f28706b5644d获得.ver=9999str="\tCFBundleDevelopmentRegion\n\ten\n\tCFBundleVersion\n\t0.1.190\n\tAppID\n\t000000000000000"putsstr.gsub/(CFBundleVersion\n\t.*\.).*()/,"#{$1}#{ver}#{$2}"puts'--------'putsstr.gsub/(CFBundleVersio

  8. ruby-on-rails - 没有这样的文件或目录 - 用 Mini Magick 识别 - 2

    在我让另一个人重做我的前端UI之前,我的Rails应用程序运行平稳。我已经尝试解决此错误3天了。这是错误:Nosuchfileordirectory-identifyExtractedsource(aroundline#59):575859606162@post=Post.find(params[:id])authorize@postif@post.update_attributes(post_params)flash[:notice]="Postwasupdated."redirect_to[@topic,@post]else{"utf8"=>"✓","_method"=>"patc

  9. ruby - 有没有办法从 ruby​​ case 语句中访问表达式? - 2

    我想从then子句中访问c​​ase语句表达式,即food="cheese"casefoodwhen"dip"then"carrotsticks"when"cheese"then"#{expr}crackers"else"mayo"end在这种情况下,expr是食物的当前值(value)。在这种情况下,我知道,我可以简单地访问变量food,但是在某些情况下,该值可能无法再访问(array.shift等)。除了将expr移出到局部变量然后访问它之外,是否有直接访问caseexpr值的方法?罗亚附注我知道这个具体示例很简单,只是一个示例场景。 最佳答案

  10. ruby - 从外部访问类的实例变量 - 2

    我理解(我认为)Ruby中类变量和类的实例变量之间的区别。我想知道如何从该类外部访问该类的实例变量。从内部(即在类方法中而不是实例方法中),它可以直接访问,但是从外部,有没有办法做MyClass.class.[@$#]variablename?我没有任何具体原因要这样做,只是学习Ruby并想知道是否可行。 最佳答案 classMyClass@my_class_instance_var="foo"class上述yield:>>foo我相信Arkku演示了如何从类外部访问类变量(@@),而不是类实例变量(@)。我从这篇文章中提取了上述内

随机推荐