Преамбула Все работы выполняются в 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-адрес; в выходной таблице отображается список всех компьютеров, рядом с именем каждого ставится знак "+" или "-".