Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Linux ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 208

Автор Роббинс ΠΡ€Π½ΠΎΠ»ΡŒΠ΄

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

F_UNLCK
для
l_type
снимаСт Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, это ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ способ ΡΠ½ΡΡ‚ΡŒ Ρ‚Π΅ самыС Π±Π»ΠΎΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ установлСны Ρ€Π°Π½Π΅Π΅, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Β«Ρ€Π°ΡΡ‰Π΅ΠΏΠΈΡ‚ΡŒΒ» Π±Π»ΠΎΠΊ, освободив Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π±Π°ΠΉΡ‚ΠΎΠ² Π² сСрСдинС Ρ€Π°Π½Π΅Π΅ установлСнного Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°. НапримСр:

struct employee { /* Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ */ }; /* ОписаниС сотрудника */

struct flock lock; /* Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π±Π»ΠΎΠΊΠ° */

...

/* Π—Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сотрудников 6-8 */

lock.l_whence = SEEK_SET; /* ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ */

lock.l_start = 5 * sizeof(struct employee); /* Начало 6-ΠΉ структуры */

lock.l_len = sizeof(struct employee) * 3; /* Π—Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ 3 записи */

/* ...установка Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ (см. ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π»)... */

/* ОсвобоТдСниС записи 7: ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Π±Π»ΠΎΠΊ расщСпляСтся Π½Π° Π΄Π²Π°: */

lock.l_whence = SEEK_SET; /* ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ */

lock.l_start = 6 * sizeof(struct employee); /* Начало 7-ΠΉ структуры */

lock.l_len = sizeof(struct employee) * 1; /* Π Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ 1-ΠΉ записи */

/* ...снятиС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ (см. ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π»)... */

14.2.2.2. Установка ΠΈ снятиС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ

ПослС заполнСния структуры

struct flock
ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом являСтся запрос Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π­Ρ‚ΠΎΡ‚ шаг осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ значСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°
cmd
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
fcntl()
:

F_GETLKΒ Β Β 
Π£Π·Π½Π°Ρ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ.

F_SETLKΒ Β Β 
Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡΠ½ΡΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ.

F_SETLKWΒ Β 
Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ, ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°Π², ΠΏΠΎΠΊΠ° это Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ.

Команда

F_GETLK
являСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ «Мама, ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ½Π΅?Β» Она освСдомляСтся, доступна Π»ΠΈ описанная
struct flock
Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°. Если ΠΎΠ½Π° доступна, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π΅ устанавливаСтся; вмСсто этого опСрационная систСма измСняСт ΠΏΠΎΠ»Π΅
l_type
Π½Π°
F_UNLCK
. Π”Ρ€ΡƒΠ³ΠΈΠ΅ поля ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Если Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° нСдоступна, опСрационная систСма заполняСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ поля свСдСниями, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ ΡƒΠΆΠ΅ установлСнныС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ установкС Π½ΠΎΠ²ΠΎΠΉ. Π’ этом случаС

l_pid
содСрТит PID процСсса, Π²Π»Π°Π΄Π΅ΡŽΡ‰Π΅Π³ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ. [152] Если Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΡƒΠΆΠ΅ установлСна, Π½Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π°, ΠΊΡ€ΠΎΠΌΠ΅ оТидания Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π½ΠΎΠ²ΠΎΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ установки Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° сообщСния ΠΎΠ± ошибкС ΠΈ ΠΎΡ‚ΠΊΠ°Π·Π° ΠΎΡ‚ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ.

Команда

F_SETLK
пытаСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ. Если
fcntl()
Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π±Ρ‹Π»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ установлСна. Если ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ -1, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ установил Π΄Ρ€ΡƒΠ³ΠΎΠΉ процСсс. Π’ этом случаС Π² errno устанавливаСтся Π»ΠΈΠ±ΠΎ
EAGAIN
(ΠΏΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ снова ΠΏΠΎΠ·ΠΆΠ΅) ΠΈΠ»ΠΈ
EACCESS
(Π½Π΅Ρ‚ доступа). Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π΄Π²Π° значСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ старым систСмам.

Команда

F_SETLKW
Ρ‚Π°ΠΊΠΆΠ΅ пытаСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ. Она отличаСтся ΠΎΡ‚
F_SETLK
Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° установка Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π΅ окаТСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ.

Π’Ρ‹Π±Ρ€Π°Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°

cmd
, ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ Π² качСствС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°
fcntl()
вмСстС с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡƒΡŽ структуру
struct flock
Π² качСствС Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

struct flock lock;

Β int fd;

Β /* ...ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ», Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ struct flock... */

Β if (fcntl(fd, F_SETLK, &lock) < 0) {

Β /* Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ, ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ */

}

Ѐункция

lockf()
[153] прСдоставляСт Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ способ установки Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π°.

#include <sys/file.h> /* XSI */

int lockf(int fd, int cmd, off_t len);

ДСскриптор Ρ„Π°ΠΉΠ»Π°

fd
Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ для записи.
len
ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ число Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ²: ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ полоТСния (Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ
pos
) Π΄ΠΎ
pos + len
Π±Π°ΠΉΡ‚ΠΎΠ², Ссли
len
ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈΠ»ΠΈ ΠΎΡ‚
pos - len
Π΄ΠΎ
pos - 1
, Ссли len ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

F_LOCKΒ Β Β 
УстанавливаСт ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°. Π’Ρ‹Π·ΠΎΠ² блокируСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π½Π΅ станСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ.

F_TLOCKΒ Β 
ΠŸΡ‹Ρ‚Π°Π΅Ρ‚ΡΡ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ. Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π°
F_LOCK
, Π½ΠΎ Ссли Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° нСдоступна,
F_TLOCK
Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

F_ULOCKΒ Β 
Π Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π». Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ расщСплСниС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅.

F_TESTΒ Β Β 
ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, доступна Π»ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°. Если доступна, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0 ΠΈ устанавливаСт Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ -1 ΠΈ устанавливаСт Π²
errno
EACCESS
.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ 0 Π² случаС успСха ΠΈ -1 ΠΏΡ€ΠΈ ошибкС, с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²

errno
. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния ошибок Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:

EAGAIN
Π€Π°ΠΉΠ» Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½, для
F_TLOCK
ΠΈΠ»ΠΈ
F_TEST
.

EDEADLK
Для
F_TLOCK
эта опСрация создала Π±Ρ‹ Ρ‚ΡƒΠΏΠΈΠΊ. [154]

ENOLCK
ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма Π½Π΅ смогла Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊ.

ПолСзна комбинация

F_TLOCK
ΠΈ
EDEADLK
: Ссли Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚ΡƒΠΏΠΈΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½ΠΈΠΊΠΎΠ³Π΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅
F_LOCK
. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, стоит ΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠΈΡ‚ΡŒ сСбя ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
F_TLOCK
. Если Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° доступна, ΠΎΠ½Π° осущСствляСтся, Π½ΠΎ Ссли Π½Π΅Ρ‚, Ρƒ вас появляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ восстановлСния вмСсто блокирования Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°Π²Π΅Ρ‡Π½ΠΎ.

Π—Π°Π²Π΅Ρ€ΡˆΠΈΠ² Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ участком, Π΅Π³ΠΎ слСдуСт ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ. Для

fcntl()
Π²ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ
struct lock
, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ для блокирования, ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ»Π΅
l_type
Π½Π°
F_UNLCK
. Π—Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅
F_SETLK
Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°
cmd
: