【问题标题】:Runtime.getRuntime().exec() work incorrectRuntime.getRuntime().exec() 工作不正确
【发布时间】:2013-03-10 04:42:19
【问题描述】:

我尝试在我的应用程序中在 Android 上运行 python 应用程序。
此脚本在 Better Terminal Emulator Pro

中正常工作
su
busybox chroot /data/local/debian /bin/bash
/usr/bin/python /usr/src/script.py

然后我输入值

>>value1
result

但如果我在我的应用中尝试过:

String line;
Runtime.getRuntime().exec("su");
Runtime.getRuntime().exec("busybox chroot /data/local/debpsla /bin/bash");
Process proc = Runtime.getRuntime().exec("ls");
OutputStreamWriter osw = new OutputStreamWriter(proc.getOutputStream());

proc.waitFor();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
while ((line = bufferedReader.readLine()) != null){ 
   publishProgress(line); 
}

命令 ls 返回不正确的文件列表。这意味着根目录不会改变。
我做错了什么?
谢谢!

【问题讨论】:

    标签: java android runtime.exec


    【解决方案1】:

    您正在分别运行每个命令,因为它们每个都启动一个新进程并且仅使用 JVM 的上下文。这意味着您将 subusybox chroot /data/local/debpsla /bin/bashls 作为并发且不相关的进程运行。

    如果您希望一个人跟随另一个人,您可以在一个过程中完成所有这些。我怀疑编写一个您执行的脚本会更容易。

    【讨论】:

    • 我认为您的回答可能不清楚,每次对 exec 的调用都会启动一个新进程,因此与之前的调用无关。
    • 我试过这个stackoverflow.com/a/3350862/2143772 例子。但 chroot 也不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多