时,execvp无法正常工作当字符串向量转换为char *向量char *的向量时,当参数以char **形式出现时正在工作,但是转换似乎有问题,我无法找到差异。从矢量<string>转换为矢量<char*>至char **
有没有更好的方法来做到这一点?
vector<string> args;
/* code that correctly parses args from user input */
pid_t kidpid = fork();
if (kidpid < 0)
{
perror("Internal error: cannot fork.");
return -1;
}
else if (kidpid == 0)
{
// I am the child.
vector<char*>argcs;
for(int i=1;i<args.size();i++)
{
char * temp = new char[args.at(i).length()];
for(int k=0;k<args.at(i).length();k++)
{
temp[k] = args.at(i).at(k);
}
argcs.push_back(temp);
}
char** argv = new char*[argcs.size() + 1];
for (int i = 0; i < argcs.size(); i++)
{
argv[i] = argcs[i];
}
argv[args.size()] = NULL;
execvp(program, args);
return -1;
}
在让我们的问题是什么可能会有帮助。 – user4581301
对不起用户,execvp找不到匹配的构造函数 – redux