我有一个可执行文件a.out
,它带有几个command-line
个参数。此可执行文件需要使用root
权限运行,例如sudo ./a.out arg1 arg2 ...
。
如何使用C ++中的execvp
系统调用来完成此操作?
答案 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”)。