Я попытался написать свою собственную оболочку в C. У меня проблема с функцией chdir()
. Иногда у меня есть сообщение об ошибке, которое говорит execvp: No such file or Directory
, а некоторые другие ничего. Каталог всегда один и тот же. Я пытаюсь добраться до места назначения, которое существует.make my own shell - C - chdir()
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");
}
}
Перед вызовом 'chdir', вы проверили, что помещено в этот указатель. –
Вы пробовали отлаживать свою программу? Какова ценность 'str'? Какова ценность 'dir'? Какая у вас ошибка? –
О, и если 'cd' имеет аргумент, входная строка, которую вам нужно сравнить, это *** не ***' 'cd \ n" '. Что-то вы должны были найти очень быстро, если вы просто использовали отладчик или просто распечатали содержимое 'str'. –