Программирование для Linux. Профессиональный подход
Шрифт:
8.3. Функция fcntl: блокировки и другие операции над файлами
Функция
Функция
Прежде чем ставить блокировку на файл, необходимо создать и обнулить структуру типа
В листинге 8.2 показана программа, которая открывает для записи указанный файл, а затем ставит на него блокировку записи. Программа ждет нажатия клавиши <Enter>, после чего снимает блокировку и закрывает файл.
Скомпилируйте программу и запустите ее с каким-нибудь тестовым файлом, скажем,
Теперь откройте другое окно и вызовите программу еще раз с тем же файлом:
Пытаясь поставить блокировку на файл, программа сама окажется заблокированной. Вернитесь в первое окно и нажмите <Enter>:
В результате программа, запущенная во втором окне, немедленно продолжит свою работу. Если необходимо, чтобы функция
В Linux имеется системный вызов
28
NFS (Network File System) — популярная технология совместного использования файлов в сети.
8.4. Функции fsync и fdatasync: очистка дисковых буферов
В большинстве операционных систем при записи в файл данные не передаются на диск немедленно. Вместо этого операционная система помещает их в резидентный кэш-буфер с целью сокращения числа обращений к диску и повышения оперативности программы. Когда буфер заполнится или произойдет какое-нибудь другое событие (например, истечет определенный промежуток времени), система запишет содержимое буфера на диск в ходе одной непрерывной операции.
В Linux тоже поддерживается такой тип кэширования. Обычно он способствует существенному повышению производительности. Но он же делает ненадежными программы, зависящие от целостности дисковых данных. Если система внезапно выйдет из строя, например вследствие сбоя ядра или отключения питания, любые данные, находящиеся в памяти и еще не записанные на диск, будут потеряны.
Предположим, создается программа обработки транзакций, которая ведет журнальный файл. В этот файл помещаются записи обо всех транзакциях, завершившихся на данный момент, чтобы в случае системного сбоя можно было восстановить целостность данных. Очевидно, не менее важна и целостность самого журнального файла: как только транзакция завершена, запись о ней должна быть немедленно занесена в дисковый файл.
Камень. Книга пятая
5. Камень
Фантастика:
боевая фантастика
рейтинг книги
Печать Пожирателя 3
3. Пожиратель
Фантастика:
городское фэнтези
аниме
сказочная фантастика
фэнтези
попаданцы
рейтинг книги
Чужое наследие
3. Другая сторона
Фантастика:
боевая фантастика
рейтинг книги
Рождественский детектив (сборник рассказов)
Детективы:
прочие детективы
рейтинг книги
И в аду есть герои
5. Тайный Город
Фантастика:
боевая фантастика
рейтинг книги
Путь к бессмертию 2
2. Девятихвостый Богатырь
Фантастика:
попаданцы
сказочная фантастика
фэнтези
рейтинг книги
Меняя маски
1. Унесенный ветром
Фантастика:
боевая фантастика
попаданцы
рейтинг книги