在我的主函数中从命令行传递参数并使用execvp

在我的主函数中从命令行传递参数并使用execvp,c,execvp,C,Execvp,我尝试在终端中传递命令行参数ls-l/user/myuser,并在main中执行execvp。 但在调试代码时,它不知怎么给了我这个错误 argv[0]是可执行文件,在本例中需要传递第二个参数。也不要执行argv[argc+1]=NULL;因为C标准说argv是以NULL结尾的。 这应该起作用: int main(int argc, char *argv[]){ pid_t pid; pid = fork(); //negative value is failed,

我尝试在终端中传递命令行参数ls-l/user/myuser,并在main中执行execvp。 但在调试代码时,它不知怎么给了我这个错误

argv[0]是可执行文件,在本例中需要传递第二个参数。也不要执行argv[argc+1]=NULL;因为C标准说argv是以NULL结尾的。 这应该起作用:

int main(int argc, char *argv[]){
    pid_t pid;
    pid = fork();

    //negative value is failed, 0 is newly created child process
    if(pid < 0){
        fprintf(stderr, "Fork Failed");
        exit(-1);
    }else if(pid == 0){
        //fork() -> child process
        printf("You entered %d commands: \n", argc);
        execvp(argv[1],&argv[1]);
    }else{
        wait(NULL);
        printf("child complete\n");
        exit(0);
    }
   return 0;
}
int main(int argc, char *argv[]){
    pid_t pid;
    pid = fork();

    //negative value is failed, 0 is newly created child process
    if(pid < 0){
        fprintf(stderr, "Fork Failed");
        exit(-1);
    }else if(pid == 0){
        //fork() -> child process
        printf("You entered %d commands: \n", argc);
        execvp(argv[1],&argv[1]);
    }else{
        wait(NULL);
        printf("child complete\n");
        exit(0);
    }
   return 0;
}