Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
□
F_GETLK
□
F_SETLK
□
F_SETLKW
Когда вы используете эти варианты, третий аргумент в вызове должен быть указателем на структуру
struct flock
<b>int fcntl(int fildes, int command, struct flock *flock_structure);</b>
Структура
flock
□
short l_type
□
short l_whence
□
off_t l_start
□
off_t l_len
□
pid_t l_pid
Элемент
l_type
Таблица 7.1.
Значение | Описание |
---|---|
F_RDLCK | Разделяемая или совместная блокировка (блокировка на чтение). У разных процессов может быть разделяемая блокировка одних и тех же (или перекрывающихся) участков файла. Если у какого-либо процесса есть разделяемая блокировка, ни один процесс не сможет установить исключительную блокировку этого участка. Для получения совместной блокировки файл должен быть открыт с правом на чтение или на чтение/запись |
F_UNLCK | Разблокировать. Применяется для снятия блокировок |
F_WRLCK | Исключительная блокировка (или блокировка на запись). Только один процесс может установить исключительную блокировку на любой конкретный участок файла. После того как процесс установил такую блокировку, никакой другой процесс не сможет установить блокировку любого типа на этот участок файла. Для установки исключительной блокировки файл должен быть открыт с правом на запись или на чтение/запись |
Элементы
l_whence
l_start
l_len
l_whence
SEEK_SET
SEEK_CUR
SEEK_END
l_whence
l_start
SEEK_SET
l_start
l_len
Параметр
l_pid
F_GETLK
command
Для каждого байта в файле может быть установлена блокировка только одного типа в каждый конкретный момент времени и может быть либо разделяемой блокировкой, либо исключительной или блокировка может отсутствовать. Для системного вызова
fcntl
Первое значение параметра command —
F_GETLK
fildes
fcntl
F_GETLK
Значения, используемые в структуре
flock
Таблица 7.2
Значение | Описание |
---|---|
l_type | Или F_RDLCK F_WRLCK |
l_whence | Одно из значений: SEEK_SET SEEK_CUR SEEK_END LCK |
l_start | Начальный байт интересующего вас участка файла |
l_len | Количество байтов в интересующем вас участке файла |
l_pid | Идентификатор процесса, удерживающего блокировку |
Процесс может применять вызов с командой
F_GETLK
flock
fcntl
flock
flock
F_GETLK
Если вызов с командой
F_GETLK
flock
l_pid
flock
Эта команда пытается заблокировать или разблокировать участок файла, заданного
fildes
flock
F_GETLK
Таблица 7.3
Значение | Описание |
---|---|
l_type | Одно из следующих: • F_RDLCK F_WRLCK F_UNLCK |
l_pid | Не используется |