【发布时间】:2015-01-14 11:44:05
【问题描述】:
我尝试用 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");
}
}
【问题讨论】:
-
在调用
chdir之前,您是否检查了该指针中放置的内容。 -
你试过调试你的程序吗?
str的值是多少?dir的值是多少?你得到什么错误? -
哦,如果
cd有参数,那么您需要比较的输入字符串是not"cd\n"。如果您只是使用调试器,或者只是打印出str的内容,您应该很快就能找到的东西。