所以我基本上有一个向量 args,每个数组有 1 个参数,我试图将其传递给 unix 中的 execv() 调用。
Execv 接受两个参数,如下所示: int execv(const char *path, char *const argv[]);
将我的字符串向量转换为指针数组的最佳方法是什么?现在我正在执行以下操作,但是当我运行它时说,ps -a -f,ps 对我大喊大叫说非法参数。任何帮助表示赞赏。
vector<string> args = tokenize(cmd);
char * arg[args.size()];
for(int j=0; j<args.size();j++)
{
arg[j] = (char*)args[j].c_str();
}
retval = execv(args[0].c_str(), arg);
.
>ps
PID TTY TIME CMD
635 ttys000 0:00.18 -bash
16106 ttys000 0:00.00 ./test cpp
12590 ttys001 0:00.02 -bash
>ps -a
ps: illegal argument: ?????