2013-03-09 4 views
0

Я пытаюсь запустить приложение python на Android в своем приложении.
Этот сценарий работы правильно Better Terminal Emulator ProRuntime.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 return not right Список файлов. Это означает, что корневой каталог не изменяется.
Что я делаю неправильно?
Спасибо!

ответ

0

Вы выполняете каждую команду отдельно, когда они запускают новый процесс каждый и только с контекстом JVM. Это означает, что вы выполняете su и busybox chroot /data/local/debpsla /bin/bash и ls как параллельные и несвязанные процессы.

Если вы хотите, чтобы один из них следил за другим, вы делаете это всего за один процесс. Я подозреваю, что писать сценарий, который вы выполняете, будет проще.

+1

Я думаю, что ваш ответ может быть неясным, что каждый вызов exec запускает новый процесс и поэтому не имеет отношения к предыдущему вызову. – Zagrev

+0

Я попробовал этот http://stackoverflow.com/a/3350862/2143772 пример. Но и chroot не работал. –

Смежные вопросы