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

时间:2016-09-23 14:58:54

标签: c++ exec execvp

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

如何使用C ++中的execvp系统调用来完成此操作?

2 个答案:

答案 0 :(得分:0)

 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”,所以这是第一个参数;然后剩余的单词作为单独的参数,作为数组传递。

答案 1 :(得分:-1)

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