
У меня два телефона на Android, один с root-правами, другой нет. Когда я запускаю следующий код, не спрашивая root-прав на двух телефонах,
system("echo \"abc\" > /data/a.txt\n");
рутированный телефон возвращает мне ошибку-2 (512); обычный телефон возвращает ошибку-1 (256, разрешение отклонено). Так что мой вопрос в том, в чем эта разница.
решение1
По крайней мере, на моем настольном Linux-системе errno 2 — ENOENT
, то есть, нет такого файла или каталога. Вы можете узнать это с помощью errno
команды (хотя, возможно, на телефоне ее нет).
Это может означать, что у вас нет /data на этом телефоне (что было бы странно). Мой рутированный телефон (Galaxy Nexus, работающий на стоковой Jelly Jean 4.2.2) выдает сообщение об отказе в доступе, когда я пытаюсь сделать это в оболочке (не в программе на C, как вы, судя по всему, делаете)
Предлагаю ls -ld /data
начать, а может и which echo
посмотреть, что там по-другому. Или у вас нет оболочки; работает system("true")
?