Execvp не удалось с ошибкой 13 даже в корне на Android Arm64-V8a - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь выполнить команду оболочки из c ++ на Android.Я собираю для arm64-v8a и armeabi-v7a.Мое устройство Android имеет root-права.

Я не понимаю, почему, но следующий код прекрасно работает, когда я запускаю двоичный файл armeabi-v7a как пользователь root или не пользователь root и когда я запускаю arm64-v8a какпользователь без полномочий root.Но если я запускаю двоичный файл arm64-v8a от имени пользователя root, он не работает, я получаю:

EXECVP : -1
ERRNO : 13
int main()
{
    char* command[] = {
        (char*) "/sbin/su",
        (char*) "-c",
        (char*) "/system/bin/sh -c \"/system/bin/touch /data/local/tmp/foo\"",
        NULL
    };
    std::cout << "EXECVP : " << execvp(command[0], command) << std::endl;
    std::cout << "ERRNO : " << errno << std::endl;
}

Я также пытался работать с функцией system() или popen(), но ничего не решеномоя проблема.У меня всегда один и тот же результат: отлично работает с armeabi-v7a (пользователь root или пользователь без полномочий root) и arm64-v8a (пользователь без полномочий root), но систематически происходит сбой при запуске его от имени пользователя root.

...