用C做一个shell

时间:2015-04-16 20:53:12

标签: c shell execvp

我正在尝试使用C作为家庭作业创建一个shell,但我的execvp()不起作用。它没有执行ls。我在虚拟机lubuntu 32工作 我的outpout任何我的错误消息! http://prntscr.com/6um9xm

if(pid==0){        
       printf("child");                                                                                                            
  char **tokens=tokenizer(hey)//hey is from fgets. tokenizer is fine
printer(tokens);

  //execute ls                                                                                                                                                               
  execvp( ls_args[0], ls_args);

  //only get here if exec failed                                                                                                                                             
  perror("execv failed");

  return 2; //return error status   }

1 个答案:

答案 0 :(得分:1)

你的第三个参数(a[2])最后有一个换行符。 ls因此抱怨它无法在您的主目录下找到以单个换行符命名的目录。修复命令解析以不包括换行符。