Основы программирования в Linux
Шрифт:
Как это работает
Для каждой группы из пяти байтов в файле программа lock4 задает структуру участка файла для тестирования блокировок, которую она потом применяет для определения того, может ли этот участок быть заблокирован для чтения или записи. Возвращаемая информация показывает байты, относящиеся к участку файла, смещение от нулевого байта, которое могло бы вызвать аварийное завершение запроса на блокировку. Поскольку поле
Для того чтобы понять вывод, следует заглянуть в заголовочный файл fcntl.h (обычно /usr/include/fcntl.h) и увидеть, что поле
Для байтов с 10-го по 30-й возможна установка разделяемой блокировки, поскольку блокировка, установленная программой lock3, не исключительная, а разделяемая. Для участка с 40-го по 50-й байт нельзя установить оба типа блокировки, поскольку lock3 задала исключительную (
После завершения программы lock4 необходимо немного подождать, чтобы программа lock3 завершила вызов
Конкурирующие блокировки
Теперь, когда вы увидели, как проверять существующие блокировки файла, давайте посмотрим, что произойдет, когда две программы состязаются за получение блокировки для одного и того же участка файла. Вы воспользуетесь снова программой lock3 для блокировки файла и новой программой lock5 для попытки установить новую блокировку файла. В завершение вы добавите в программу lock5 несколько вызовов для снятия блокировки (упражнение 7.11).
Далее приведена программа lock5.с, которая пытается заблокировать уже заблокированные участки файла вместо того, чтобы проверить состояние блокировки других частей файла.
После директив #include и объявлений откройте дескриптор файла.
В оставшейся части программы задаются разные участки файла, и делается попытка установить для них блокировки разных типов:
Санкт-Петербург. Автобиография
Научно-образовательная:
история
рейтинг книги
Клиент
Детективы:
триллеры
рейтинг книги
Неучтенный элемент. Том 7
7. Антимаг. Вне системы
Фантастика:
фэнтези
рейтинг книги
Свободный среди звезд: пилот
Вселенная EVE Online
Фантастика:
космическая фантастика
рейтинг книги
Старплекс. Конец эры (сборник)
Шедевры фантастики
Фантастика:
научная фантастика
рейтинг книги
Перехитрить богов. Дилогия
29. В одном томе
Фантастика:
научная фантастика
рейтинг книги
Газлайтер. Том 26
26. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
рейтинг книги
Северянин. Трилогия
Северянин
Фантастика:
фэнтези
рейтинг книги
Город Бездны
1. Космический апокалипсис
Фантастика:
научная фантастика
космическая фантастика
рейтинг книги
Право на жизнь
Фантастика:
ужасы и мистика
рейтинг книги
Старая школа рул
1. Второгодка
Фантастика:
альтернативная история
рейтинг книги
Война с Востока. Книга об афганском походе
Проза:
военная проза
рейтинг книги
Основы общей психологии
Мастера психологии
Научно-образовательная:
психология
рейтинг книги
Американская трагедия
150. Библиотека всемирной литературы
Проза:
классическая проза
рейтинг книги