在我的主函数中从命令行传递参数并使用execvp
我尝试在终端中传递命令行参数ls-l/user/myuser,并在main中执行execvp。 但在调试代码时,它不知怎么给了我这个错误 argv[0]是可执行文件,在本例中需要传递第二个参数。也不要执行argv[argc+1]=NULL;因为C标准说argv是以NULL结尾的。 这应该起作用:在我的主函数中从命令行传递参数并使用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,
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;
}