制作我自己的shell - C - chdir()

时间:2015-01-14 11:44:06

标签: c linux shell chdir

我曾尝试在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"); 
        }
   }

2 个答案:

答案 0 :(得分:2)

如果您希望存在参数,字符串比较将永远不会成功。

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

答案 1 :(得分:2)

你可以尝试

if(strncmp(str,"cd\n",2)==0)

在第3行..因为你必须忽略空格..如果进入内部!!