我曾尝试在C中编写自己的shell。我的chdir()
函数存在问题。
有时我会收到一条错误消息,上面写着execvp: No such file or Directory
而其他一些消息都没有。目录始终相同。我想到达一个存在的目的地。
if(strcmp(str,"exit\n")!=0){
history_vector[i]=strdup(str);
if(strcmp(str,"cd\n")==0){
char *dir = strtok(str," ");
dir = strtok(NULL," ");
if(chdir(dir) == -1) {
perror("Cannot change directory");
}
else {
printf("Changing Directory .....\n");
}
}
答案 0 :(得分:2)
如果您希望存在参数,字符串比较将永远不会成功。
您与"cd\n"
一起使用的字符串strcmp()
不包含参数,因此如果str
更长,则不匹配。
答案 1 :(得分:2)
你可以尝试
if(strncmp(str,"cd\n",2)==0)
在第3行..因为你必须忽略空格..如果进入内部!!