Задача состоит в том, чтобы на языке C написать расширение программы Microshell, работающей под Linux —
Macroshell . Оболочка должна соответствовать всем обязательным элементам дизайна Microshell и указанным ниже:
Точки | Обязательный | Описание |
---|
0,5 балла | ✓ | отображать подсказку как [{path}] $ , где {path} путь к текущему рабочему каталогу; |
0,5 балла | ✓ | обрабатывать команду cd , которая работает так же, как cd мы знаем из оболочки bash; |
0,5 балла | ✓ | обрабатывать команду exit , завершающую программу оболочки; |
0,5 балла | ✓ | поддерживать команду help , выводя на экран информацию об авторе программы и предлагаемых ею функциональных возможностях; |
2 балла | ✓ | принимать команды, ссылающиеся по имени на программы, расположенные в каталогах, описываемых значением переменной окружения, PATH и разрешать вызов этих скриптов и программ с аргументами (читать fork() + exec*() ); |
1 балл | ✓ | вывести сообщение об ошибке, когда команда не может быть правильно интерпретирована; |
максимум 25 баллов | ✓ | реализовать как минимум три из следующих функций |
Дополнительные функции (по 5 баллов):
- обрабатывать перенаправления, например.
program < input > output
- обрабатывать потоки, например.
program1 | program2 | program3
- обрабатывать сигналы таким образом, что, например, при
<Ctrl+C>
отправке дочернему процессу это не приведет к закрытию родительского процесса - поддерживать выполнение команд в фоновом режиме с помощью
&
- включить управление фоновыми задачами (
jobs
, bg
, fg
)