Сделать мою собственную оболочку - 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-й строке.. как вы должны игнорировать пробелы.. чтобы войти внутрь, если!!