в чем проблема с этим кодом?

Я пытаюсь вызвать evecvp () с этими аргументами:

vector<string>subcommand;
void parse(char *str)
{
pid_t pid;
char *cmd1=(char *)malloc(sizeof(300));

cmd1=strtok(str," ");
while(cmd1!=NULL)
{
subcommand.push_back(cmd1);
cmd1=strtok(NULL," ");
}

subcommand.push_back('\0');
vector<char const*> v( subcommand.size() );
for( int i = 0; i < v.size(); ++i )
{
v[i] = subcommand[i].c_str();
}

fork();
if(pid==0)
execvp(subcommand[0].c_str(),v);

}

Я получаю эту ошибку:

main1.cpp: In function ‘void parse(char*)’:
main1.cpp:80:34: error: cannot convert ‘std::vector<const char*>’ to ‘char* const*’ for argument ‘2’ to ‘int execvp(const char*, char* const*)’

Перепробовал все перестановки с типизацией, но просто не могу заставить его работать.
В чем проблема?

-2

Решение

Переменная v является vector<char const*> в заявлении execvp(subcommand[0].c_str(),v);в то время как объявление evecvp int execvp(const char*, char* const*),

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]