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

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

本文关键字:sudo 命令 bash 执行 何使用 execvp 函数      更新时间:2023-10-16

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

如何在c++中使用execvp系统调用来实现这一点?

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

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

由于execvp()将为您搜索PATH,您可以简单地将"sudo"作为命令传递,然后将参数传递给命令。注意,命令的第一个参数是命令的名称。

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

这是不工作:?execvp("/usr/bin/sudo"、"。/。