Лабораторная 1.
Синхронизация работы параллельных задач
(с помощью файловых блокировок)

Процесс может быть заблокирован в ожидании сигналов с внешних устройств или специальных объектов ОС, в ожидании освобождения используемых в данный момент файлов или других видов ресурсов. Таким образом выполняется синхронизация работы параллельно выполняющихся процессов, а также обеспечивается корректность доступа к таким видам ресурсов, которые не допускают своего одновременного использования различными процессами.

Доступ к файлам полностью контролируется операционной системой. Файлы имеют различные режимы доступа, причем в некоторых из этих режимов одновременный доступ к файлу запрещен. Например (в общем случае), если файл открыт одним процессом для записи, то попытка второго процесса открыть его для записи приводит к ошибке. Данный факт можно использовать для эмуляции блокировок. Соответствующий файл назовем файлом блокировки. Блокировка в указанном случае не будет полной, т.к. в действительности процесс, пытающийся получить доступ к заблокированному файлу, не приостановливается, он продолжает свое выполнение, сгенерировав ошибку ввода-вывода. Обеспечить эмуляцию блокировки можно, организовав цикл, в котором производятся попытки открыть файл блокировки до тех пор, пока данное действие не закончится удачно.

Задание

Дан текстовый файл, содержащий целое число N. Разработать программу, после своего запуска ожидающую запуск N-1 аналогичных программ. По достижении количества требуемого количества запущенных копий, каждая из программ должна завершить свою работу.

Краевые условия: