-2

これらの引数で 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*)’

型キャストですべての順列を試しましたが、うまくいきません。どうしたの?

4

1 に答える 1

1

変数vvector<char const*>ステートメントexecvp(subcommand[0].c_str(),v);にありますが、evecvp の宣言は ですint execvp(const char*, char* const*)

于 2013-09-02T00:53:57.750 に答える