Skip to content
Kirill Krinkin edited this page Sep 17, 2016 · 5 revisions

Идентификатор задачи: 01 Дедлайн: 25.09.2016

Цель: Разработать Unix-like shell

Описание: Скачать шаблон приложения интерпретатора команд из репозитария (samples/sh.c) и реализовать поддержку следующих функций:

  • выполнение команд (запуск исполняемых файлов по имени)
  • реализация перенаправления ввода-вывода
  • реализация каналов

Компиляция: Все операции по сборке приложения поместить в Makefile, содержащий 2 цели "build", "clean". Первая собирает приложение с именем sh, вторая удаляет все артифакты, кроме исходных текстов.

Проверка: для проверки работоспособности можно использовать следующий алгоритм. Поместить набор команд в текстовый файл, например cmd.sh:

ls > y
cat < y | sort | uniq | wc > y1
cat y1
rm y1
ls | sort | uniq | wc
rm y 

Запуск sh < cmd.sh должен заканчиваться успехом.

Требования к коду: исходный код должен быть оформлен единообразно в соответствии с выбранным (самостоятельно) стилем и содержать адекватное количество комментриев.

Дополнительные функции для реализации

  • (*) поддержка списков команд, разделенных символом ";"
  • (*) поддержка вложенных shell внутри символов "(" ")"
  • (*) реализация запуска команд в бакграунде, поддержка "&" и "wait"
Clone this wiki locally