Как выполнить команду sudo в bash с помощью функции execvp?

У меня есть исполняемый файл, a.out что занимает несколько command-line аргументы. Этот исполняемый файл должен быть запущен с root привилегии, как sudo ./a.out arg1 arg2 ... ,

Как я должен сделать это, используя execvp системный вызов в C ++?

0

Решение

 char *args[5];

args[0]="sudo";
args[1]="./a.out";
args[2]="arg1";
args[3]="arg2";
args[4]=NULL;
execvp("sudo", args);

Оболочка разделяет данную команду на слова, разделенные пробелами. Первое слово ищется в PATHи все слова передаются команде в качестве параметров.

Sinec execvp() будет искать PATH для вас вы можете просто передать «sudo» в качестве команды, а затем аргументы команды. Обратите внимание, что первым аргументом команды является имя команды.

Вы выполняете команду sudo, так что это первый аргумент; затем оставшиеся слова в качестве отдельных аргументов передаются в виде массива.

0

Другие решения

Это не работает: ?
execvp («/ usr / bin / sudo», «./a.out arg1 erg2»).

-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector