時,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