Server for Information Technologies ������ ��������������
������� �������������� ����������
(095) 932-9212, 932-9213, 939-0783
E-mail: [email protected]
������ �������� ����(!) ������������� ���������� CIT Forum CD-ROM

LOCKF(3C)

��������
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 � ������, ���� ������� ����� ��� ���������� ������ ���������, ��� ���������� ����������� ���������� �������� ������� ������� � ������������ ��� ���� ������.
Comments: [email protected]
Designed by Andrey Novikov
Copyright © CIT