Я пытаюсь создать какую-то оболочку C на C, но у меня проблемы с выполнением команды ls
.mkdir
и cd
работают нормально, но с ls
это дает мне
"Ошибка сегментации адреса вне границ"
Надеюсь, кто-нибудь может мне помочь.Вот мой код.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <readline/readline.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
printf("\033[1;33mWelcome To Crisp Bacon Shell\n");
while (1) {
printf("\033[0m%s $", hostname);
input = readline("");
command = get_input(input);
child_pid = fork();
if (child_pid < 0) {
perror("Fork failed");
exit(1);
}else if (child_pid == 0) {
/* Never returns if the call is successful */
execvp(command[0], command);
printf("This won't be printed if execvp is successul\n");
} else {
waitpid(child_pid, &stat_loc, WUNTRACED);
}
free(input);
free(command);
}
return 0;
}
char **get_input(char *input) {
char **command = malloc(8 * sizeof(char *));
char *separator = " ";
char *parsed;
int index = 0;
parsed = strtok(input, separator);
while (parsed != NULL) {
command[index] = parsed;
index++;
parsed = strtok(NULL, separator);
}
command[index] = NULL;
return command;
}
Единственное, что я понимаю, это как-то связано с памятью и ссылками или указателями, но я попытался изменить все с & ссылки на указатели, и это просто дало мне больше ошибок, что мне делать