2013-03-09 172 views
0

我试着在我的应用程序上运行Android上的python应用程序。
这个脚本工作正确的更好的终端模拟器临Runtime.getRuntime().exec()工作不正确

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

回答

0

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

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

+1

我认为你的答案可能并不清楚每次调用exec都会启动一个新进程,因此与之前的调用无关。 – Zagrev 2013-03-09 20:40:16

+0

我试过这个http://stackoverflow.com/a/3350862/2143772例子。但是chroot也没有工作。 – 2013-03-10 10:31:10

相关问题