ЛР2. Низкоуровневая (дескрипторная) обработка файлов.

Задания

    Для решения задач следует использовать дескрипторные функции работы с файлами.

  1. Коннектор файлов

    Программа-коннектор эмулирует действия по объединению множеств. Программа принимает набор имен исходных файлов в качестве параметров командной строки. Каждый файл содержит набор неповторяющихся в пределах файла числовых значений. Аналогичным образом заполнен файл set.dat, который не может присутствовать в списке исходных файлов. Программа должна дополнить файл set.dat такими числовыми значениями из исходных файлов, которые отсутствуют в set.dat. По окончании работы файл set.dat также должен содержать набор неповторяющихся значений.

    Несколько копий программы может быть запущенно параллельно. В таком случае доступ к файлу set.dat должна одновремнно иметь только одна копия программы, остальные должны ожидать окончания освобождения файла set.dat.

    Формат и размер числовых значений в файлах выбирается студентом самостоятельно.

  2. Охрана файла

    Разработать две программы.

    Первая программа, "Охранник", при запуске формирует бинарный файл secure.dat в текущем каталоге (размер файла передается в командной строке). Каждый байт secure.dat "Охранник" заполняет случайным значением от 1 до 255, последний байт в файле = 0. Затем, раз в N миллисекунд (передается в командной строке), "Охранник" считывает файл и сравнивает его с эталоном, хранящемся в оперативной памяти. Если файл отличается от эталона, "Охранник" выводит на экран 1) сообщение "Обнаружен похититель!", 2) позиции всех байтов с некорректным содержимым и 3) эталон, после чего удаляет файл и завершает работу.

    Вторая программа, "Похититель", при запуске ожидает появления файла "secure.dat" в текущем каталоге и его полного заполнения, после чего пытается с периодичностью в X миллисекунд (передается в командной строке) считать из файла один байт со случайной позиции и заменить его в файле на значение 0. Позиции не должны повторяться. При исчезновении файла secure.dat "Похититель" должен вывести на экран 1) сообщение "Тревога, уходим!" и 2) позиции и значения всех байтов, которые удалось похитить, после чего завершить работу. При успешном чтении всех байтов из файла "Похититель" должен сформировать файл abducted.dat из похищенных байтов и завершить работу. При удачном "похищении" содержимое файла abducted.dat будет полностью соответствовать эталону, сформированному "Охранником".