如何使用 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",因此这是第一个参数;然后剩下的单词作为单独的参数,作为数组传递。
我有一个可执行文件 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",因此这是第一个参数;然后剩下的单词作为单独的参数,作为数组传递。