如何使用 execvp 函数执行 bash 的 sudo 命令?

How to execute the bash's sudo command using execvp function?

我有一个可执行文件 a.out,它带有几个 command-line 个参数。此可执行文件需要 运行 具有 root 权限,例如 sudo ./a.out arg1 arg2 ... .

我应该如何使用 C++ 中的 execvp 系统调用来执行此操作?

这不起作用:? execvp("/usr/bin/sudo", "./a.out arg1 erg2").

 char *args[5];

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

shell 将给定的命令拆分为以空格分隔的单词。第一个单词在 PATH 中查找,所有单词都作为参数传递给命令。

Sinec execvp() 将为您搜索 PATH,您只需将 "sudo" 作为命令传递,然后将参数传递给命令。请注意,命令的第一个参数是命令的名称。

您正在执行的命令是 "sudo",因此这是第一个参数;然后剩下的单词作为单独的参数,作为数组传递。