Перейти к содержанию

Практикум на UNIX


Рекомендуемые сообщения

Уважаемы гуру.. подскажите как решить практикум по програмированию.Сейчас скачиваю USB Knoppix 5.1 можно ли на нем сделать задание? Embarassed

Подскажите хотя бы часть остальное попробую сделать по аналогии

зарание спасибо всем помогающим Embarassed

Требуется реализовать программу MyShell, которая будет выполнять (интерпретировать) некоторое подмножество команд оболочки shell, заданное ниже. «Побочный» эффект выполнения уже обработанных команд (например, перенаправление ввода-вывода) не должен влиять на выполнение последующих команд.
Входной язык:
•	конвейер pr1 | рг2 | ... | prN для произвольного N>=2; считать, что аргументов у pr1
(1<= I<= N) нет (но возможна реализация с произвольным числом аргументов у
каждого процесса)
•	перенаправление ввода-вывода <, >, » (в том числе для pr1 и prN в конвейере)
Например,     pr < data > res
pr1 | pr2 > res.txt
•	запуск в фоновом режиме & (в том числе и для конвейеров)
Например,     pr arg1 arg2 &
pr1 | pr2 | рг3 > res.all &
•	последовательное выполнение команд pr1; pr2 ; ... ;prN
pri выполняются как если бы они были переданы интерпретатору по одной команде в строке. При реализации учитывайте, что приоритет операции I выше, чем приоритет операции ; однако возможно использование скобок: например, (pr1; рг2) | рг3, что приведет к конкатенации результатов работы pr1 и рг2, которые будут переданы процессу рг3 как входные данные.
•	pri && рг2
Выполнить pr1; в случае успеха выполнить рг2
•	pri || рг2
Выполнить pr1; в случае неудачи выполнить рг2
В качестве процессов для интерпретации можно использовать процессы UNIX, такие как grep, cat, mv, cp, we, ps, Is, emp, sort, tail и другие.
Вариант усложненный (повышение оценки на 0,5 балла):
• Дополнительно реализовать выполнение скриптов MyShell - при передаче в командной строке имени файла, программа должна интерпретировать содержимое файла.

1.	Написать программу, моделирующую команду SHELL:
( здесь pr1 - имена процессов, argj - аргументы процессов,
f.dat - файл входных данных, f.res - файл результатов; в
каждом из процессов pr1 использован стандартный ввод-вывод)
Аргументы, необходимые этой программе, задаются в ко¬мандной строке.
1). pr1 | рг2 | ргЗ
2). pr1 | pr2 > f.res
3). pr1 arg1l arg12 < f.dat | pr2 arg21 agr22
4). pr1 < f.dat > f.res
5). pr1 < f.dat | pr2 | pr3 > f.res
6). pr1 | pr2 » f.res
7). prl;pr2 | pr3 > f.res
8). ((pr1 | pr2); pr3) | pr4
9). pr1 argl < f.dat; pr2 | pr3 »f.res 10). prl;pr2; ... ;prn 11). prl;pr2; ... ;prn & 12). pr1 | pr2 | ... | prn 13). pr1 |pr2 I ... I prn &
2.	Написать программу, моделирующую команду SHELL
pr1 && pr2
( выполнить pr1; в случае успешного завершения pr1 выполнить рг2, иначе завершить работу ). Имена процессов задаются в ко¬мандной строке.
3.	Написать программу, моделирующую команду SHELL
pr1 || pr2
( выполнить pr1; в случае неудачного завершения pr1  выпол¬нить рг2, иначе завершить работу ). Имена процессов задаются в командной строке.
4.	Написать программу, моделирующую выполнение команды
(prl; pr2) | ргЗ > f.res
(конкатенация результатов работы процессов pr1 и рг2 передается в качестве входных данных процессу рг3; результаты его работы перенаправляются в файл f.res; в процессах prl, pr2 и рг3 использован стандартный ввод-вывод).
1). аргументы задаются в командной строке в виде
pr1 pr2 рг3 f.res
2). команда (prl; pr2)|pr3>f.res вводится как строка во время работы программы.

Ссылка на комментарий
Поделиться на другие сайты

knoppix скачал ,запустил

не подскажете как дальше скрипт писать.. алгоритм обработки может сам придумаю..а вот как скрипт написать,как его редактировать и сохранят ? Surprised

Ссылка на комментарий
Поделиться на другие сайты

пробую.. можно хотя бы какой нит пример показать ка делается?

потому как я долго еще буду вникать в премудрости nix

а пример бы помог бы понять как считываються данный с клавиатуры и как передаються shell на исполнение

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...