Преамбула
Все работы выполняются в UNIX-подобных операционных системах, - Linux, FreeBSD, MacOS, OpenSolaris, QNX. В случае недоступности таковых, установить самостоятельно на виртуальную машину Oracle VirtualBox (свободная загрузка с сайта Oracle), выбрать и скачать дистрибутив ОС можно на сайте www.distrowatch.com.
Необходимые утилиты и компиляторы при необходимости установить дополнительно. Справки по используемым функциям и утилитам и электронные варианты учебников прилагаются в архиве.
Выбор варианта — по формуле: остаток от деления на 3 суммы всех цифр номера зачетной книжки плюс единица.
Задание 1. "ПРОЦЕССЫ И СИГНАЛЫ"
Написать на языке "C" или "C++" программу, создающую древовидное множество процессов. Каждый из созданных процессов должен иметь обработчик сигналов SIGALRM и SIGUSR1. При получении сигнала SIGALRM процесс должен выводить свой идентификатор pid на экран, при получении сигнала SIGUSR1 процесс должен завершаться и посылать такой же сигнал своим потомкам. Использовать системные функции fork(), signal() и kill().
Вариант 1.1. «Вымирающие поколнения»
Первый процесс порождает 4 новых, каждый из которых - по 3, их потомки - по 2, а следующее поколение - только по одному процессу.
Вариант 1.2. «квадрат потомков»
Первый процесс порождает 3 новых, каждый из которых - по одному, их потомки - тоже по одному, следующее поколение - тоже только по одному процессу, после чего порождения новых процессов не происходит.
Вариант 1.3. «двоичное дерево»
Первый процесс порождает 2 новых, каждый из которых - по 2, их потомки - по 2, а следующее поколение процессов не порождает.
Задание 2. "ОБОЛОЧКА bash"
Необходимо написать скрипт на языке оболочки bash.
В этой программе необходимо реализовать выполнение повторяющихся действий над множеством файлов, расположенных в заданном каталоге и во вложенных в него каталогах,
используя рекурсивный обход.
Используемые понятия и знания:
- Основные конструкции языка оболочки. Проверка типа файла, проверка успешности завершенной команды, Выбор действия по суффиксу файла.
Вариант 2.1. "Распаковка файлов"
Программа должна распаковывать файлы, архивированные без пароля следующими
средствами:
- утилитой tar,- суффиксы файлов: .tar; утилитой gzip,- суффиксы файлов: .gz; утилитой tar+gzip,- суффиксы файлов: .tar. gz, .tgz; утилитой bzip2,- суффиксы файлов: .bz2, bz; утилитой tar+bzip2,- суффиксы файлов: .tar. bz2, tbz2, .tbz; утилитой zip,- суффиксы файлов: .zip; утилитой rar,- суффиксы файлов: .rar; утилитой 7z,- суффиксы файлов: .7z, .xz.
При неудаче во время распаковки исходные архивы сохраняются, при успешной
операции - удаляются. Использовать утилиты rar, unzip, bzip2, tar, gzip, 7z.
Вариант 2.2. "Приведение файлов изображений к одинаковому размеру"
Для оформления web-страниц часто требуются изображения фиксированного размера.
Программа должна все графические файлы преобразовать к заданному размеру, скажем,
иметь размер 640x400 пикселей или быть вписанным в прямоугольник такого размера.
Возможные типы входных файлов и их суффиксы:
- формат jpeg, суффиксы,- .jpg, .jpeg формат bitmap, суффиксы,- .bmp формат gif, суффиксы,- .gif формат tiff, суффиксы,- .tiff, .tif формат png, суффиксы,- .png
Выходной файл должен быть в формате jpeg,
Использовать утилиту convert из пакета ImageMagick.
Вариант 2.3. "Перекодирование файлов"
Используя для определения кодировки, используемой в файлах утилиту "enca",
выполнить перекодировку всех текстовых (не двоичных!) файлов в UTF-8. Для перекодирования используется утилита iconv.
Возможные типы входных файлов и их суффиксы:
- текстовой формат, суффиксы,- .lst, .txt; формат гипертекстовой разметки, суффиксы,- .htm, .css, .xml; формат исходного кода программы, суффиксы,- .pl, .cxx, .c++, .java; без суффикса (по выводу enca).
Задание 3. Сетевые утилиты,-
проверка доступности удаленных компьютеров
Утилита ping позволяет используя протокол ICMP получить сведения о состоянии удаленного компьютера (хоста), - включен или выключен.
Написать программу (предпочтительно на bash), выполняющую следующее:
прочитав список хостов из файла "hosts. txt", расположенного в домашнем каталоге пользователя, проверять состояние хостов каждую минуту и отображать их актуальность в виде таблицы в окне терминала.
Вариант 3.1.
Формат входного файла:
В каждой строке указано имя хоста и через пробел его IP-адрес;
в выходной таблице отображаются только включенные компьютеры.
Вариант 3.2.
Формат входного файла:
В каждой строке указано имя хоста и через пробел его IP-адрес;
в выходной таблице отображаются все компьютеры, включенные выделяются цветом.
Вариант 3.3.
Формат входного файла:
В каждой строке указано имя хоста и через пробел его IP-адрес;
в выходной таблице отображается список всех компьютеров,
рядом с именем каждого ставится знак "+" или "-".


