1. Найти совпадающие по содержимому файлы в двух заданных каталогах (аргументы 1

и 2 командной строки) и всех их подкаталогах. Вывести на консоль и в файл (аргумент 3

командной строки) полный путь, размер, дату создания, права доступа, номер индексного

дескриптора.

2.Написать программу поиска заданной пользователем комбинации из m

байт (m

открывает каталог и запускает для каждого файла каталога отдельный

процесс поиска заданной комбинации из m байт. Каждый процесс

выводит на экран свой pid, полный путь к файлу, общее число

просмотренных байт и результаты (сколько раз найдена комбинация)

поиска (все в одной строке). Число одновременно работающих процессов

не должно превышать N (вводится пользователем). Проверить работу

программы для каталога /etc и строки «ifconfig».

3. Создать дерево процессов согласно варианта индивидуального задания.

Процессы непрерывно обмениваются сигналами согласно табл. 2 . Запись в

таблице 1 вида: 1->(2,3,4,5) означает, что исходный процесс 0 создаёт дочерний

процесс 1, который, в свою очередь, создаёт дочерние процессы 2,3,4,5. Запись

в таблице 2 вида: 1->(2,3,4) SIGUSR1 означает, что процесс 1 посылает

дочерним процессам 2,3,4 одновременно (т.е. за один вызов kill() ) сигнал

SIGUSR1.Каждый процесс при получении или посылке сигнала выводит на

консоль информацию в следующем виде:

N pid ppid послал/получил USR1/USR2 текущее время (мксек)

где N-номер сына по рис. 1

Процесс 1, после получения 101 –го по счету сигнала SIGUSR, посылает

сыновьям сигнал SIGTERM и ожидает завершения всех сыновей, после чего

завершается сам. Процесс 0 ожидает завершения работы процесса 1 после чего

Отец

Сын 1 Сын 2

завершается сам. Сыновья, получив сигнал SIGTERM, завершают работу с

выводом на консоль сообщения вида:

pid ppid завершил работу после X-го сигнала SIGUSR1 и Y-го сигнала

SIGUSR2

где X, Y – количество посланных за все время работы данным сыном сигналов

SIGUSR1 и SIGUSR2

Для создания правильной последовательности сигналов в

соответствие с таблицей задания необходимо для каждого процесса

написать свой обработчик сигналов в котором он (процесс) принимает

сигнал от предыдущего (в таблице) процесса и посылает следующему (в

таблице) процессу!!

Во всех заданиях должен быть контроль ошибок (если к какому-либо

каталогу нет доступа, необходимо вывести соответствующее сообщение и

продолжить выполнение).

Вывод сообщений об ошибках должен производиться в стандартный поток

вывода сообщений об ошибках (stderr) в следующем виде:

имя_модуля: текст_сообщения.

Пример: pid: 1.exe: Error open file: 1.txt

Имя модуля, имя файла берутся из аргументов командной строки.

1-ая картинка  - дерево сигналов

2-ая картинка - последовательность обмена сигналами

6 лет назад
guest_15549792477754
6 лет в сервисе
Был
6 лет назад

Заявки фрилансеров

Нет заявок фрилансеров