したがって、基本的に、配列ごとに1つの引数を持つベクトル引数があり、UNIXでexecv()呼び出しに渡そうとしています。
Execv は次のような 2 つのパラメーターを受け入れます。 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: ?????