Основы программирования в 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_whencel_startl_lenl_whenceSEEK_SETSEEK_CURSEEK_ENDl_whencel_startSEEK_SETl_startl_lenПараметр
l_pidF_GETLKcommandДля каждого байта в файле может быть установлена блокировка только одного типа в каждый конкретный момент времени и может быть либо разделяемой блокировкой, либо исключительной или блокировка может отсутствовать. Для системного вызова
fcntlПервое значение параметра command —
F_GETLKfildesfcntlF_GETLKЗначения, используемые в структуре
flockТаблица 7.2
| Значение | Описание |
|---|---|
l_type | Или F_RDLCKF_WRLCK |
l_whence | Одно из значений: SEEK_SETSEEK_CURSEEK_END LCK |
l_start | Начальный байт интересующего вас участка файла |
l_len | Количество байтов в интересующем вас участке файла |
l_pid | Идентификатор процесса, удерживающего блокировку |
Процесс может применять вызов с командой
F_GETLKflockfcntlflockflockF_GETLKЕсли вызов с командой
F_GETLKflockl_pidflockЭта команда пытается заблокировать или разблокировать участок файла, заданного
fildesflockF_GETLKТаблица 7.3
| Значение | Описание |
|---|---|
l_type | Одно из следующих: • F_RDLCKF_WRLCKF_UNLCK |
l_pid | Не используется |
