Сделать мою собственную оболочку - C - chdir()

Я пытался написать свою собственную оболочку на C. У меня проблема с 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 ответа

Сравнение строк никогда не будет успешным, если вы ожидаете, что будет аргумент.

Строка "cd\n" который вы используете с strcmp() не содержит аргумента, поэтому он не будет совпадать, если str длиннее

Ты можешь попробовать

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

в 3-й строке.. как вы должны игнорировать пробелы.. чтобы войти внутрь, если!!

Другие вопросы по тегам