Основы программирования в Linux
Шрифт:
Как
Для каждой группы из пяти байтов в файле программа lock4 задает структуру участка файла для тестирования блокировок, которую она потом применяет для определения того, может ли этот участок быть заблокирован для чтения или записи. Возвращаемая информация показывает байты, относящиеся к участку файла, смещение от нулевого байта, которое могло бы вызвать аварийное завершение запроса на блокировку. Поскольку поле
Для того чтобы понять вывод, следует заглянуть в заголовочный файл fcntl.h (обычно /usr/include/fcntl.h) и увидеть, что поле
Для байтов с 10-го по 30-й возможна установка разделяемой блокировки, поскольку блокировка, установленная программой lock3, не исключительная, а разделяемая. Для участка с 40-го по 50-й байт нельзя установить оба типа блокировки, поскольку lock3 задала исключительную (
После завершения программы lock4 необходимо немного подождать, чтобы программа lock3 завершила вызов
Конкурирующие блокировки
Теперь, когда вы увидели, как проверять существующие блокировки файла, давайте посмотрим, что произойдет, когда две программы состязаются за получение блокировки для одного и того же участка файла. Вы воспользуетесь снова программой lock3 для блокировки файла и новой программой lock5 для попытки установить новую блокировку файла. В завершение вы добавите в программу lock5 несколько вызовов для снятия блокировки (упражнение 7.11).
Далее приведена программа lock5.с, которая пытается заблокировать уже заблокированные участки файла вместо того, чтобы проверить состояние блокировки других частей файла.
После директив #include и объявлений откройте дескриптор файла.
В оставшейся части программы задаются разные участки файла, и делается попытка установить для них блокировки разных типов:
Новые горизонты
5. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
сказочная фантастика
фэнтези
рейтинг книги
Шатун. Лесной гамбит
2. Шатун
Фантастика:
боевая фантастика
рейтинг книги
Кодекс Охотника. Книга XVI
16. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Запрети любить
1. Навсегда в моем сердце
Любовные романы:
современные любовные романы
рейтинг книги
Кодекс Крови. Книга ХII
12. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
рейтинг книги
Правильный лекарь. Том 11
11. Неправильный лекарь
Фантастика:
городское фэнтези
аниме
фэнтези
попаданцы
рейтинг книги
Законы Рода. Том 8
8. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
фэнтези
рейтинг книги
Дважды одаренный. Том V
5. Дважды одаренный
Фантастика:
аниме
альтернативная история
городское фэнтези
рейтинг книги
Правильный лекарь. Том 9
9. Неправильный лекарь
Фантастика:
городское фэнтези
аниме
попаданцы
рейтинг книги
Сирийский рубеж 2
6. Рубеж
Фантастика:
попаданцы
альтернативная история
рейтинг книги
Путь одиночки. Книга 1
1. Одиночка
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
рейтинг книги
Огненный наследник
10. Десять Принцев Российской Империи
Фантастика:
попаданцы
аниме
фэнтези
рейтинг книги