| Общая информация » Каталог студенческих работ » ТЕХНИЧЕСКИЕ ДИСЦИПЛИНЫ » Информатика, программирование, базы данных |
| 12.01.2026, 11:02 | |
Для лабораторных работ № 1 и 2 разбиения по вариантам нет, в лабораторных работах № 3 и 4 выбор осуществляется по общим правилам с использованием следующей формулы: V = (N × K) div 100, где V – искомый номер варианта, N – общее количество вариантов, div – целочисленное деление, при V = 0 выбирается максимальный вариант, K – код варианта.
Лабораторная работа № 1. Первоначальное знакомство с UNIX Задание Для успешной сдачи работы требуется выполнить наизусть следующие операции: 1) создать два трехуровневых поддерева каталогов и поместить в один из каталогов четыре текстовых файла, два из которых имеют в своем имени одинаковую символьную последовательность, называемую далее «словом»; 2) с помощью ed отредактировать текстовый файл; 3) вывести файл на экран; 4) выполнить добавление текста в начало, в середину и в конец файла; 5) вывести файл на экран; 6) произвести переименование файла; 7) выполнить копирование файла (исходный файл и файл-копия должны располагаться в разных каталогах); 8) поместить в любой другой каталог скрипт, имеющий два входных параметра: имя каталога и набор символов. Скрипт выполняет действия: · вывод на экран перечня файлов, «дочерних» к заданному каталогу, которые имеют в своем имени заданный набор символов; · уничтожение всех остальных файлов заданного каталога; · любые другие действия (по вашему желанию); 9) создать свой инициализационный скрипт, выполняющий действия: · здоровается; · «переделывает» приглашения shell; · запускает вложенный скрипт, созданный в (8), задав ему в качестве параметров каталог и «слово» из (1); · любые другие действия (по вашему желанию); 10) выйти из UNIX, а затем войти вновь с целью демонстрации результатов выполнения инициализационного скрипта. Примечание 1. При выполнении задания разрешается использовать те средства shell, которые рассмотрены в данной работе. В частности нельзя применять управляющие операторы (рассматриваются в следующей работе). Примечание 2. Для избирательного удаления файлов в (8) рекомендуется использовать команду rm с флагом -i, предварительно установив права доступа к файлам. При этом для обеспечения автоматического выполнения rm ее стандартный ввод должен быть переключен на вспомогательный файл, содержащий любой символ кроме «y».
Лабораторная работа № 2. Управляющие операторы командного языка Задание Требуется разработать программу на языке shell (без использования команды find), выполняющую поиск в заданном поддереве файловой структуры всех файлов, имена которых отвечают заданному шаблону. Результатом работы программы является перечень имен искомых файлов на экране. Примечание. Программа состоит из двух скриптов. Главный скрипт выполняет вывод на экран приглашения ввести с клавиатуры имя-путь начального каталога и шаблон поиска. Далее он выполняет ввод этих данных с клавиатуры и выводит на экран перечень искомых файлов в начальном каталоге поиска (если они там есть). Затем он вызывает для каждого подкаталога вложенный скрипт, передав ему два входных параметра: 1) относительное имя подкаталога; 2) шаблон поиска. Вложенный скрипт выполняет поиск в заданном каталоге искомых файлов, а для каждого подкаталога вызывает точно такой же скрипт. (При выполнении любого скрипта запускается новый экземпляр shell, поэтому рекурсивное выполнение скриптов не приводит к каким-либо трудностям.)
Лабораторная работа № 3. Операции с файлами в программе на языке Си Задание Требуется разработать одну из следующих программ: 1) копирование файла (имя старого и нового файла передаются в командной строке), используя системные вызовы; 2) копирование файла (имя старого и нового файла передаются в командной строке), используя стандартные функции; 3) вывод на экран содержимого текстового файла, имя которого задается в командной строке, используя системные вызовы; 4) вывод на экран содержимого текстового файла, имя которого задается в командной строке, используя стандартные функции; 5) ввод с клавиатуры содержимого текстового файла, имя которого задается в командной строке, используя системные вызовы; 6) ввод с клавиатуры содержимого текстового файла, имя которого задается в командной строке, используя стандартные функции; 7) ввод с клавиатуры содержимого текстового файла, имя которого задается в командной строке, используя системные вызовы и вывод его на экран, используя системные вызовы; 8) ввод с клавиатуры содержимого текстового файла, имя которого задается в командной строке, используя стандартные функции и вывод его на экран, используя системные вызовы; 9) ввод с клавиатуры содержимого текстового файла, имя которого задается в командной строке, используя системные вызовы и вывод его на экран, используя стандартные функции; 10) ввод с клавиатуры содержимого текстового файла, имя которого задается в командной строке, используя стандартные функции и вывод его на экран, используя стандартные функции.
Лабораторная работа № 4. Обработка сигналов Задание Примечание. Для получения номера своего процесса можно использовать функцию getpid: #include <sys/types.h> pid_t getpid(void); Разработать одну из следующих программ: 1. Процесс-отец порождает четыре дочерних процесса, каждый из которых выполняет бесконечный цикл. Далее в течение 10 секунд процесс-отец выводит на экран какое-то сообщение. По истечении этого времени он уничтожает два из четырех процессов, используя для этого всего одну команду. Перед завершением процесс-отец выводит на экран перечень процессов данного пользователя. 2. Процесс-отец порождает четыре дочерних процесса, каждый из которых выполняет бесконечный цикл. Далее в течение 15 секунд процессотец выводит на экран какое-то сообщение. По истечении этого времени он уничтожает три из четырех процессов, используя для этого всего одну команду. Перед завершением процесс-отец выводит на экран перечень процессов данного пользователя, предваряя их текстовой строкой hi!:. 3. Процесс-отец порождает четыре дочерних процесса, каждый из которых выполняет бесконечный цикл. При этом каждый из дочерних процессов особым образом реагирует на сигнал SIGINT: · процесс 1 при получении сигнала SIGINT выводит сообщение на экран и продолжается; · процесс 2 обрабатывает сигнал SIGINT в бесконечном цикле, выдавая свое сообщение на экран. Данный цикл защищен от воздействия сигнала SIGQUIT; · вся программа процесса 3 защищена от воздействия сигнала SIGINT; · перед входом процесса 4 в бесконечный цикл для него меняется идентификатор сеанса. Сразу после порождения дочерних процессов процесс-отец завершается. Далее следует проверить реакцию оставшихся процессов на сигналы SIGINT и SIGQUIT. 4. Процесс-отец порождает четыре дочерних процесса, каждый из которых выполняет бесконечный цикл. При этом каждый из дочерних процессов особым образом реагирует на сигнал SIGINT: · процесс 1 обрабатывает сигнал SIGINT в бесконечном цикле, выдавая свое сообщение на экран, добавляя к нему текущую дату. Данный цикл защищен от воздействия сигнала SIGQUIT; · процесс 2 при получении сигнала SIGINT выводит сообщение на экран и продолжается; · вся программа процесса 3 защищена от воздействия сигнала SIGINT; · перед входом процесса 4 в бесконечный цикл для него меняется идентификатор сеанса. Сразу после порождения дочерних процессов процесс-отец завершается. Далее следует проверить реакцию оставшихся процессов на сигналы SIGINT и SIGQUIT. 5. Процесс-отец порождает три дочерних процесса, каждый из которых выполняет бесконечный цикл. При этом каждый из дочерних процессов особым образом реагирует на сигнал SIGINT: · процесс 1 обрабатывает сигнал SIGINT в бесконечном цикле, выдавая свое сообщение на экран, добавляя к нему текущую дату Данный цикл защищен от воздействия сигнала SIGQUIT; · процесс 2 при получении сигнала SIGINT выводит сообщение на экран и продолжается; · вся программа процесса 3 защищена от воздействия сигнала SIGINT. Сразу после порождения дочерних процессов процесс-отец завершается. Далее следует проверить реакцию оставшихся процессов на сигналы SIGINT и SIGQUIT. 6. Процесс-отец открывает существующий текстовый файл, а затем порождает два дочерних процесса, которые по очереди выводят содержимое этого файла фиксированными порциями по 10 символов, предваряя каждый вывод номером своего процесса. Вывод на экран заканчивается или при достижении конца файла, или по истечении интервала времени в 10 секунд. 7. Процесс-отец открывает существующий текстовый файл, а затем порождает два дочерних процесса, которые по очереди выводят содержимое этого файла фиксированными порциями по 20 символов, предваряя каждый вывод номером своего процесса. Вывод на экран заканчивается или при достижении середины файла, или по истечении интервала времени в 10 секунд. 8. Процесс-отец открывает существующий текстовый файл, а затем порождает два дочерних процесса, которые по очереди выводят содержимое этого файла фиксированными порциями по 15 символов, предваряя каждый вывод номером своего процесса. Вывод на экран заканчивается или при достижении середины файла, или по истечении интервала времени в 5 секунд. 9. Процесс-отец открывает существующий текстовый файл, а затем порождает два дочерних процесса, которые по очереди выводят содержимое этого файла фиксированными порциями по 30 символов, предваряя каждый вывод номером своего процесса. Вывод на экран заканчивается или при достижении конца файла, или по истечении интервала времени в 2 секунды. 10. Процесс-отец открывает существующий текстовый файл, а затем порождает два дочерних процесса, которые по очереди выводят содержимое этого файла фиксированными порциями по 22 символа, предваряя каждый вывод номером своего процесса. Вывод на экран заканчивается или при достижении конца файла, или по истечении интервала времени в 12 секунд. | |
