我尝试用 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");
}
}
最佳答案
如果您期望存在参数,则字符串比较将永远不会成功。
与 strcmp()
一起使用的字符串 "cd\n"
不包含参数,因此如果 则不会匹配str
更长。
关于c - 制作我自己的 shell - C - chdir(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27942176/