|
��������
lockf - ���������� ��������� �����
���������
#include <unistd.h> int lockf (fildes, function, size) long size; int fildes, function;
��������
������� lockf ��������� ����������� ��������� ��������
�����. ��������� �� ���������� ��� ������, ������������
������� ������� � ����� [��. chmod(2)]. ���� ������
�������� ���������� ����������� ��� ���������������
��������, ��� ���� ������� � ����� ��� ������, ���� ����� ����� ������������ �������. ��� ���������� ��������
��� ����������, ������������� ��, ���������. ����� ��������� ���������� � ���������� ��������� � fcntl(2).
�������� fildes - ��� ���������� ��������� �����. ����� ������� lockf ����������� �������, ���� ������ ���� ������ � ������ ������ (O_WRONLY ��� O_RDWR).
�������� function - ��� ��������, �������� ���������� ��������. ���������� �������� ���������� �� ���������� ����� <unistd.h>:
#define F_ULOCK 0 /* �������������� ����� ������������� ������� */ #define F_LOCK 1 /* ������������� ������� */ #define F_TLOCK 2 /* ��������� � ������������� ������� */ #define F_TEST 3 /* ��������� ������� */������ �������� function ��������������� ��� ������� ���������� � �������� � ������, ���� �� �����������.
�������� F_TEST ������������ ��� ����������� ����, �� ���������� �� ��������������� ������� ����� �����-������ ������ ���������. F_LOCK � F_TLOCK ��������� ��������� �������, ���� ��� ��������. F_ULOCK ������������ ����� ������������� �������.
�������� size ������ ���������� ���������������� ���� �����, ������� ������ ���� ������������� ��� ��������������. ������� �������� �������� ������� ������� � �����; ������� ���������������� ������ ��� ����� �� �����, � ����������� �� �������������� ��� �������������� �������� size (��� ��������������� ����� ������� ������� �� ���������� � ����������� ��� �������������� �������). ���� �������� size ����� 0, ����������� (��� ��������������) ������� �� ������� ������� �� ����� ����� (�������� � ������ ��������). ����������� ������� �� ������ ������������ � �����, ��������� ���������� �������� �� ������ �����.
��������, ����������� ����������� F_LOCK � F_TLOCK, ����� ��������� ��� �������� ������������ � ����������, ����� �������������� ��� �� ���������. ��� ����������� ������ �����������, � ����� ��� ����������� ������� ���������, ��������� ���� ����������� �������, ������������ ��� ������� �����. ���� ��� ������������ ��������� ����� ����������� �������, �� ��������� � ������� ����������; ��� �������� ����� � ���� ������� ��������� � lockf ����������� �������� � ���������� �� ���������������.
������� F_LOCK � F_TLOCK ���������� ������ ����������, ������� ������������ � ������, ���� ���������� ����������� ����������. F_LOCK �������� � �������� ������������ �������. ������ F_TLOCK, ���� ������� ��� ���������� ������ ���������, �������� � �������� �������� -1 � ������������ ���������� errno �������� EACCES.
������ F_ULOCK ����� ��������� ��� �������� �������������� ���� ��� ����� ���������, ��������������� ���������� ���������. ���� ������� �������������� �� ���������, ������� �������� �������������. ��������������� �������� �������� ������� ��������������� �������� � ������� ����������. ��� �������� ����� � ���� ������� ���������� �������, ���������� errno ������������� �������� EDEADLK � ������������� �� ������������.
���� �������, ����������� ������, ���� ������������ ������� ������� ������ ���������, ����� ���������� �����, ������� lockf � fcntl ������������ ����������� ����������� ������, ������ ��� ������ �������� �������. ���� ��������������, ��� �������� ������� ������� �����, �������� ������.
�������� ������� ����� ���� �������� ������������ ��������. ��� ����������, � ������� ��������� ��������� ��������, ������������� ������������ ��������� ������� alarm(2).
������� lockf ����������� ��������, ���� ��������� ���� �� ���� �� ��������� �������:
[EBADF] | �������� fd �� �������� ���������� ������������ ��������� �����. |
---|---|
[EACCES] | �������� function ����� F_TLOCK ��� F_TEST, � ������� ��� ���������� ������ ���������. |
[EDEADLK] | �������� function ����� F_LOCK � ����� ��������� �����, ��� �������� function ����� F_LOCK, F_TLOCK ��� F_ULOCK, � � ������� ���������� �� ������� �����. |
[ECOMM] | Fildes �������� ������������ ����� �� ��������� ����������, ����� � ������� � ������ ������ ���. |
��. �����
chmod(2), close(2), creat(2), fcntl(2), intro(2),
open(2), read(2), write(2).
�����������
��� �������� ���������� ��������� ����� 0; � ������
������ ������������ -1, � ���������� errno ������������� ��� ������.
���������������
��� ��������, ������� ���������� ������������ �����/������ � �������� ������������ ������������, ����������
�������������� � ���������� ���������� ����� ���������
����������������: ������ � ��������������� �������
������� ���������, ���� ����� ������ ������ � ������
����� ����� �������� � ������ ��-�� ������������ �������. ������� ���������� ����������� ����������� �������� ����������� ����� �����/������.
��� ��� � ������� ���������� errno ����� ������������� �������� EAGAIN, ������ �������� EACCES � ������, ���� ������� ����� ��� ���������� ������ ���������, ��� ���������� ����������� ���������� �������� ������� ������� � ������������ ��� ���� ������.
|