我试图用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");
        }
   }

最佳答案

如果您希望有一个参数,则字符串比较将永远不会成功。

"cd\n"一起使用的字符串strcmp()不包含参数,因此,如果str较长,则该字符串将不匹配。

关于c - 制作自己的shell-C-chdir(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27942176/

10-12 16:11