Runtime.getRuntime()。exec()工作不正确

时间:2013-03-09 20:14:45

标签: java android runtime.exec

我尝试在我的应用程序中在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 返回不正确的文件列表。这意味着根目录不会更改 我做错了什么? 谢谢!

1 个答案:

答案 0 :(得分:0)

您正在分别运行每个命令,因为它们各自启动一个新进程,并且只有JVM的上下文。这意味着您将subusybox chroot /data/local/debpsla /bin/bash以及ls作为并发和不相关的流程运行。

如果你想要一个人跟随另一个人,你就可以在一个过程中完成这一切。我怀疑写一个你执行的脚本会更容易。