MiniShell - Unix-like Command Interpreter
Упрощенная реализация командной оболочки на C с поддержкой конвейеров и перенаправления.
Описание:
MiniShell - это консольная оболочка, поддерживающая выполнение команд, конвейеры (pipes), перенаправление вывода и фоновые задачи.
Технологии:
Язык: C (C99)
API: POSIX (fork, exec, pipe, dup2, waitpid)
Сборка: GCC/Clang
Возможности:
Выполнение внешних команд через execvp
Конвейеры команд (cmd1 | cmd2 | cmd3)
Перенаправление вывода (>, >>)
Фоновое выполнение задач (&)
Встроенные команды: cd, exit
Корректная обработка exit codes
Поддержка && и || (опционально)
Быстрый старт
Сборка:
gcc -Wall -Wextra -Werror -o shell solution.c parser.c
Запуск:
./shell
Примеры использования:
ls -la | grep .c
echo "hello" > file.txt
cat file.txt
ps aux | grep init &
Архитектура:
Parser: Разбор командной строки (токенизация, кавычки, экранирование)
Executor: Создание процессов, настройка pipe и редиректов
Built-in commands: Обработка специальных команд внутри shell
Особенности:
Неблокирующий ввод-вывод
Корректная обработка сигналов
Отсутствие zombie-процессов
Поддержка аргументов без пробелов (echo "test">file)
Включают тесты на:
Простые команды
Конвейеры
Перенаправление
Фоновые задачи
Встроенные команды