Чтение Android из InputStream не согласовано

#android

#Android

Вопрос:

У меня есть рутированный телефон Android. Я пытаюсь прочитать вывод «ls» с помощью моей программы:

             Process p = null;
            p = Runtime.getRuntime().exec(new String[]{"su", "-c", "system/bin/sh"});
            DataOutputStream stdin = new DataOutputStream(p.getOutputStream());
            stdin.writeBytes("ls / n");
            stdin.flush();
            InputStream stdout = p.getInputStream();
  

и после этого, когда я делаю read() , вызов read иногда блокируется, иногда он не блокируется, и я могу читать из потока. Иногда мне приходится ждать заполнения буфера.

 read = stdout.read(buffer);
  

Нет ли какого-либо согласованного способа, которым могло бы произойти это чтение. Я делаю ls в том же каталоге и отмечаю разные задержки.

или

Лучше ли использовать псевдотерминал?