
- •230105 - «Программное обеспечение вычислительной техники и автоматизированных систем»
- •220201- «Управление и информатика в технических системах»
- •Введение
- •Выполнение работы
- •Цель работы
- •Содержание работы
- •Методические указания к работе
- •Основные назначения командного интерпретатора в ос unix
- •Синтаксис языка Bourne Shell
- •Общий синтаксис скрипта
- •Переменные
- •Встроенные переменные
- •Перенаправление ввода-вывода
- •Логические операции в контексте test
- •Условный оператор "if"
- •Оператор выбора case
- •Оператор цикла с перечислением for
- •Оператор цикла с истинным условием while
- •Оператор цикла с ложным условием until
- •Основные команды ос unix для работы с файлами
- •1. Команда pwd.
- •Задание 1.
- •2. Команда man.
- •Задание 2.
- •3. Команда cd.
- •Задание 3.
- •4. Команда ls.
- •Права доступа к файлам
- •Задание 4.
- •5. Команда cat.
- •Задание 5.
- •6. Простейшие команды работы с файлами: cp, rm, mkdir, mv
- •Задание 6.
- •Задание 7.
- •Системные вызовы getuid и getpid
- •Задание 8.
- •Контрольные вопросы
- •Лабораторная работа № 3.
- •Процессы в операционной системе unix.
- •Цель работы
- •Научиться создавать процессы и освоить изменение пользовательского контекста процессов с помощью системных вызовов, применяемых в программах на языке с, в ос unix.
- •Содержание работы
- •Методические указания к работе Иерархия процессов
- •Прототипы системных вызовов
- •Создание процесса в unix
- •Прототип системного вызова
- •Завершение процесса. Функция exit() Прототип функции
- •Описание функции
- •Параметры функции main() в языке с Переменные среды и аргументы командной строки
- •Задание 3.
- •Прототипы функции
- •Описание функций
- •Системный вызов wait():
- •Задание 4.
- •Варианты:
- •Контрольные вопросы
- •Методические указания Понятие о потоке ввода-вывода
- •Понятие о работе с файлами через системные вызовы и стандартную библиотеку ввода-вывода для языка с
- •Файловый дескриптор
- •Открытие файла
- •Системный вызов open Прототип системного вызова
- •Описание системного вызова
- •Возвращаемое значение
- •Системные вызовы read(), write().
- •Прототипы системных вызовов:
- •Описание системных вызовов
- •Возвращаемые значения
- •Особенности поведения при работе с файлами
- •Описание системного вызова
- •Возвращаемые значения
- •Пример программы для записи информации в файл
- •Понятие неименованного канала. Системный вызов pipe()
- •Важное отличие pip'a от файла заключается в том, что прочитанная информация немедленно удаляется из него и не может быть прочитана повторно.
- •Описание системного вызова
- •Возвращаемые значения
- •Организация связи через pipe между процессом-родителем и процессом-потомком.Наследование файловых дескрипторов при вызовах fork() и ехес().
- •Пример программы для организации однонаправленной связи между родственными процессами через pipe
- •Манипуляция таблицей дескрипторов
- •Описание системного вызова
- •Возвращаемые значения
- •Описание функции
- •Возвращаемые значения
- •Особенности поведения вызова ореn() при открытии fifo
- •Пример программы с fifo в родственных процессах
Цель работы
Изучить работу команд интерпретатора Bourne Shell в ОС UNIX; освоить синтаксис написания команд и организацию командного файла (скрипта) в ОС UNIX. Освоить работу в одном из текстовых редакторов UNIX (например, KWriter). С помощью языка Bourne Shell научиться составлять скрипты и работать с ними.
Содержание работы
1. Изучить программные средства языка интерпретатора Bourn Shell.
2.Ознакомиться с устройством файловой системы UNIX (упрощенное понятие). Изучить основные команды для работы с файлами, пользуясь методическими указаниями.
Выполнить в интерактивном режиме задания 16.
3. Освоить правила организации и запуска скрипта в OC UNIX.
Выполнить задание 7.
4. Освоить структуру программы на С, функции ввода/вывода.
Выполнить задание 8.
5. Составить отчет и защитить работу преподавателю, ответив на контрольные вопросы.
Методические указания к работе
Работа в современной версии ОС UNIX существенно отличается от работы с ОС UNIX пятнадцатилетней давности. Широкое распространение получил графический интерфейс, множество цветов, всевозможные графические утилиты настройки различных подсистем и т.д. Тем не менее, основой основ пользовательской среды и соответственно взаимодействия между пользователем и ОС является командная строка.
Основные назначения командного интерпретатора в ос unix
1. При регистрации пользователя в системе первой запускаемой программой является командный интерпретатор. С него начинается "жизнь" всех остальных пользовательских процессов. Рассмотрим более подробно примерную схему работы пользователя в ОС UNIX.
После запуска ОС инициализирует процесс getty (1M) (сервер терминального доступа), запускающий программу login (1), запрашивающую у пользователя имя и пароль для входа в систему.
2. Если пользователь ввел корректные имя и пароль, login(1) запустит программу, путь к которой указан в последнем поле файла passwd, как правило, являющейся командным интерпретатором.
Командный интерпретатор исполняет инициализационный файл и выдает системное приглашение на терминал. После этого пользователь может начинать свою обычную работу.
После завершения работы командного интерпретатора (например, командой exit) пользователь завершает свою работу в системе.
3. Командный интерпретатор - это удобный и простой язык программирования очень высокого уровня, позволяющий конструировать из различных утилит UNIX сложные структуры. Исполняемые файлы, содержащие команды Shell, называются скриптами.
4. При входе пользователя в систему командный интерпретатор запускает инициализационный скрипт, устанавливающий конкретное окружение пользователя, такие как тип терминала, пути поиска программ, путь к почтовому ящику и т.д. Естественно, для каждого командного интерпретатора существует свой специальный инициализационный файл.
Для командного интерпретатора Bourne Shell инициализационный файл profile.
Синтаксис языка Bourne Shell
Bourne Shell является достаточно развитым языком программирования даже для выполнения достаточно сложных заданий. Но, из-за особенностей работы скриптов shell (аналогично вводу с пользовательского терминала) не следует ждать высокой скорости обработки. Для этих задач существует, например, язык С.