Книга: Основы программирования в Linux
Другие команды блокировок
Другие команды блокировок
Есть второй метод блокировки файлов — функция lockf
. Она тоже действует, используя дескрипторы файлов.
У функции следующий прототип:
#include <unistd.h>
int lockf(int fildes, int function, off_t size_to_lock);
Параметр function
может принимать следующие значения:
? F_ULOCK
— разблокировать;
? F_LOCK
— заблокировать монопольно;
? F_TLOCK
— проверить и заблокировать монопольно;
? F_TEST
— проверить наличие блокировок других процессов.
Параметр size_to_lock
содержит количество обрабатываемых байтов, отсчитываемых в файле от текущей величины смещения. У функции lockf
более простой интерфейс, чем у вызова fcntl
в основном потому, что у нее меньше функциональных возможностей и гибкости. Для применения функции вы должны найти начало участка, который хотите заблокировать, затем вызвать функцию, указав количество блокируемых байтов.
Как и в случае вызова fcntl
, все блокировки только рекомендательные; они на самом деле не могут помешать чтению из файла или записи в файл. За проверку имеющихся блокировок отвечают программы. Эффект от смешивания блокировок с помощью fcntl
и блокировок с помощью lockf
непредсказуем, поэтому вам следует решить, какой способ выбрать, и строго его придерживаться.
- Другие инструменты для осуществления резервного копирования
- Другие изменения в 7-й версии InterBase
- Датчик расположения и другие датчики
- 6.4 Другие файловые системы
- Команды и формирование культуры по инициативе сверху
- Другие предикаты сравнения
- Я установил программу и не хочу, чтобы другие пользователи о ней знали. Как скрыть ее?
- Как удалить ненужные команды из контекстного меню?
- Можно ли интегрировать в пакет установки Windows Service Pack и другие обновления, чтобы потом не приходилось их устанав...
- Другие варианты подключения
- Как из-под учетной записи пользователя (без администраторских привилегий) включать и отключать оборудование и выполнять ...
- В Microsoft Word не всегда удобно выделять большие фрагменты текста мышью. Есть ли другие способы?