-4

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

2 回答 2

2

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

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

于 2015-01-14T11:49:29.433 回答
2

你可以试试

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

在第 3 行.. 因为你必须忽略空格.. 进入 if !!

于 2015-08-22T19:15:12.223 回答