У меня есть исполняемый файл, a.out
что занимает несколько command-line
аргументы. Этот исполняемый файл должен быть запущен с root
привилегии, как sudo ./a.out arg1 arg2 ...
,
Как я должен сделать это, используя execvp
системный вызов в C ++?
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, так что это первый аргумент; затем оставшиеся слова в качестве отдельных аргументов передаются в виде массива.
Это не работает: ?
execvp («/ usr / bin / sudo», «./a.out arg1 erg2»).