Практическое задание по дисциплине «Операционные системы» для ЭИОС ГУД



Задание. Командный интерпретатор. Направление потока вывода, смена текущего рабочего каталога, эхо

Дополнить программу возможностью выполнения команд с направлением потока вывода в файл (а не на экран, как это было ранее) возможностью корректного выполнения команд cd (смена рабочего каталога) и echo (вывод строки на экран).

Программа должна уметь выполнять команды вида:

·     команда [парам 1] [парам 2] … [парам N] > имя_файла;

·     cd имя_каталога;

·     echo [строка].

Что запрограммировать:

1.     Поймать в введенной пользователем строке строки ‘cd’ или ‘>’.

2.   В программе теперь появляются 4 режима работы в зависимости от введенной пользователем строки (раньше был один режим):

–       если ничего из ‘cd’ или ‘>’  нет, то выполнить обычную команду с параметрами (уже сделано);

–       если есть символ направления ‘>’, стандартный поток вывода направить в новый или перезаписать существующий файл;

–       если есть команда смены каталога (cd), то не создается дочерний процесс, не выполняется exec и wait — программа просто меняет свой текущий рабочий каталог системным вызовом chdir();

–       если есть команда вывода строки (echo), то просто выводим пользовательскую строку на экран.

3.   Если пойман ‘>’. Всё, что до этого символа, считать командой и разобрать на массив строк, как в первой части задания. Всё, что после этого символа, считать именем файла — открыть этот файл функцией open() с флагами O_WRONLY|O_CREAT|O_TRUNC и правами доступа. Связать полученный после открытия дескриптор с дескриптором стандартного вывода функцией dup2(). Смотри пример в справочной информации.

4.   Запустить execvp() для команды, передав туда разобранный массив.

Нужна помощь
с дистанционным обучением?
Узнайте точную стоимость или получи консультацию по своему вопросу.