【问题标题】:On Android, unable to run procrank from java app在 Android 上,无法从 java 应用程序运行 procrank
【发布时间】:2013-09-29 19:00:35
【问题描述】:

我想要一个在后台运行的应用程序(服务),在计时器上运行 procrank 并将输出写入 sdcard 上的文件。本质上我想执行“/system/xbin/procrank > /sdcard/procrank.txt”。在等待期间,我对文件进行了一些 [最小] 处理,以便在下次运行时覆盖它。

这是在测试手机上,所以它可以被认为是“root”。我尝试了许多不同的方法来运行命令,但没有成功。

当我使用这个时:

        String[] cmd = { "/system/xbin/procrank > /sdcard/procrank_result.txt" };
        Process process = new ProcessBuilder()
        .command(cmd)
        .redirectErrorStream(true)
        .start();
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(process.getInputStream()));
            String line = "";
            while ((line = in.readLine()) != null) {
                Log.i(Constants.TAG, "Line=" + line);
            }
        process.waitFor();

我得到一个 IOException:

09-28 02:48:16.307: W/System.err(9579): java.io.IOException: Error running exec(). Command: [/system/xbin/procrank > /sdcard/procrank_result.txt] Working Directory: null Environment: [ANDROID_ROOT=/system, EMULATED_STORAGE_SOURCE=/mnt/shell/emulated, LOOP_MOUNTPOINT=/mnt/obb, ...

所以我想我会发出命令并阅读输出:

        String[] cmd = { "/system/xbin/procrank" };
        Process process = new ProcessBuilder()
        .command(cmd)
        .redirectErrorStream(true)
        .start();
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(process.getInputStream()));
            String line = "";
            while ((line = in.readLine()) != null) {
                Log.i(Constants.TAG, "Line=" + line);
            }
        process.waitFor();

但我从 procrank 收到一个我不理解的错误:

Line=Error creating kernel interface -- does this kernel have pagemap?

谁能帮我解决这个问题?

另外,我尝试了许多不同的方法来发出命令,因此 getRuntime().exec 的另一种使用过程可能不会起作用,除非它与 StackOverflow 上的许多其他解决方案不同。

是的,我的 sdcard 是可写的, /sdcard 相当于 .我可以从 adb shell 发出命令并创建文件。

如果尝试通过套接字连接到 localhost 然后发出命令,我会更幸运吗?

【问题讨论】:

    标签: java android process


    【解决方案1】:

    这个问题太老了,但如果有人遇到这个问题:我也遇到了这个问题。执行以下操作为我解决了这个问题:

    adb 等待设备根目录

    adb 等待设备重新挂载

    adb shell 进程

    【讨论】:

      【解决方案2】:

      这似乎是手机构建的问题,也可能是其他问题。

      我不知道如何结束这个问题。我可以关闭它吗?

      【讨论】:

      • 我也遇到这个错误,但是当你通过PC的控制台使用它时,它工作正常......
      猜你喜欢
      • 2019-08-03
      • 2020-03-16
      • 2018-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 2012-07-02
      • 1970-01-01
      相关资源
      最近更新 更多