Преамбула

Все работы выполняются в 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-адрес;

в выходной таблице отображается список всех компьютеров,

рядом с именем каждого ставится знак "+" или "-".