������ �������� ����(!) ������������� ����������
|
CIT Forum CD-ROM
|
|
FCNTL(2)
��������
fcntl - ���������� �������
���������
#include <fcntl.h>
int fcntl (fildes, cmd, arg)
int fildes, cmd, arg;
��������
��������� ����� fcntl ��������� ����������� ��������
��� ��������� �������. �������� fildes - ��� ����������
��������� �����, ���������� ����� ���������� ���������
������� creat, open, dup, fcntl � pipe.
�������� cmd ����� ��������� ��������� ��������, ������������ ����������� ��������:
- F_DUPFD
- ������� ����� ���������� ����� � ������ ����������:
- ��� ����� - ���� ����������� �� ��������� �������, �� ������� arg.
- �� ������������ � ��� �� �������� ������ (���
�������), ��� � �������� ���������� fildes.
- � ���� ��� �� ��������� ������� ������� � �����, ��� � � ��������� (�� ���� ��� ���������
����� ���������).
- ��� �� ����� ������� � ����� (������, ������
��� ������/������).
- �� �� ����� ������� ����� (�� ���� ��� ����������� ��������� ����� ����� �������).
- ��������������� � ����� ������������ ���� "������� ��� ���������� ������ exec" ��������������� � ��������� "�������� �������� ��� ���������� ������ exec".
- F_GETFD
- �������� �������� ����� "������� ��� ����������
������ exec" ��� ����������� ����� fildes. ����
������� ��� ������������� �������� ����� ����, ��
���� ��������� ��������, � ��������� ������ ���
���������� ������ exec ���� ����� ������.
- F_SETFD
- ���������� �������� ����� "������� ��� ����������
������ exec" ��� ����������� ����� fildes ������
�������� �������� ���� (0 ��� 1) ��������� arg.
- F_GETFL
- �������� ����� ������� �����, ���������������� �
������������ fildes.
- F_SETFL
- ���������� ����� ������� �����, ���������������� �
������������ fildes, ������� �������� ���������
arg. ����� ���� ����������� ������ ��������� �����
[��. fcntl(5)].
- F_GETLK
- �������� �������������� ������ ����������, �������� ���������� ����� ����������, ���������� ���������� ���� flock � ������� arg. �������������� ���������� ������������ � ��� �� ���������. ���� ���
����� ��� �������� ������ ����������, �� ���������
flock �� ���������� �� ����������� ���� ���� ����������, �������� ������������� �������� F_UNLCK.
- F_SETLK
- ���������� ��� ����� ���������� �������� ����� �
������������ �� ��������� ��������� ���� flock, ��
������� ��������� �������� arg. [��. fcntl(5)].
�������� F_SETLK ������������ ��� ��������� ���������� �� ������ (F_RDLCK) ��� ������ (F_WRLCK), �
����� ��� ������ ���������� ����� ����� (F_UNLCK).
���� ���������� �� ������ ��� ������ �� ����� ����
�����������, �� ��������� ����� fcntl �����������
���������� � ���������� -1.
- F_SETLKW
- ��� �������� ���������� �� �������� F_SETLK ������
���, ��� ��� ��������� ������� ���������� ���������� �� ������ ��� ������ ������� ��������� �
��������� �������� �� ��� ���, ���� ������ �������
����� �� ����� �������������.
���������� �� ������ ������������� ���������� ���������� ������� �����-���� ��������� �� ������. ��� �������
�������� ����� ����� ������������ ������������ ��������� ���������� �� ������. ����������, ������������ ���
������������ ���������� �� ������, ������ ���� ������������ � ������, �������� � ������ ������.
���������� �� ������ ������������� ���������� ���������� ������� �� ������ ��� ������. ������������ �����
������������ �� ����� ����� ���������� �� ������ ������� �������� �����. ����������, ������������ ��� ������������ ���������� �� ������, ������ ���� ������������
� ������, �������� � ������ ������.
��������� ���� flock �������� ����, ������������ ���
�������� ����� ��� ���������� (l_type), ��������� �������� (l_whence), ������������� �������� (l_start),
������ (l_len), ������������� ������� ��� (l_sysid),
������������� �������� (l_pid). �������������� ��������
� ������� ������������ ������ � ������ �������� F_GETLK
��� �������� ������������� ����������. ������ � �����
����������� ������� ����� �������� �� ����� �����, ��
�� �� ������. ����� ���������� ����������, ������ ����������� �� ����� �����, ���� �������� ���� l_len �����
0. ���� �������� ����� l_whence � l_start ����� 0, ��
���������� ����� ���������������� �� ���� ����. ��������� ��� ������ ���������� �������� �� �������� ��������
����������� �������� �������� � ��������� � ����� ������ ���� ������� ���������� ���������. ���������� ��������, ������� ��� ���������� ���������� ���������,
�������� � �������� ������� � ��������� ������ ����
����������. ��� ����������, ��������������� � ������
��� ������� ��������, ���������, ����� ���� �����������
���� ��������� ��� ����� ������� �������������, �� �������� ����. ���������� �� ����������� ����������� ��������� ��� ���������� ���������� ������ fork(2).
���� ���������� ������� � ����� ��������� [��.
chmod(2)], �� ��������� ������ read � write ��� �����
����� ����������� � ������ ����������� ����������.
��������� ����� fcntl ����������� ��������, ���� ��������� ���� �� ���� �� ��������� �������:
- [EBADF]
- �������� fildes �� �������� ����������
������������ ��������� �����.
- [EINVAL]
- ��� �������� cmd, ������ F_DUPFD, ��������
��������� arg ���� ������������, ���� ������ ��� ����� ����������� ����������� ���
������ ������������ ���������� ������������
�������� ������.
- [EINVAL]
- ��� �������� cmd, ������ F_GETLK, F_SETLK
��� F_SETLKW, �������� ��������� arg ���
����������, �� ������� ��������� arg, �����������.
- [EACCES]
- ��� �������� cmd, ������ F_SETLK, ��������
������� ����������� �� ������ (F_RDLCK)
������� �����, ��������������� ������ ��������� �� ������, ���� ������� �����������
�� ������ (F_WRLCK) ������� �����, ��������������� ������ ��������� �� ������ ��� ������.
- [ENOLCK]
- ��� �������� cmd, ������ F_SETLK ���
F_SETLKW, ����������� ����������� ���������� �������� ���������� ����������.
- [EDEADLK]
- ��� �������� cmd, ������ F_SETLKW, ��������
����������� ���������� ���������� ��������
� ������.
- [EFAULT]
- ��� �������� cmd, ������ F_SETLK, ��������
arg ��������� �� ������� ����������� �������� ��������� ������������.
- [EINTR]
- �� ����� ���������� ���������� ������ ���������� ������.
- [ENOLINK]
- ���������� fildes ������������ � ������ ��
��������� ����������, ����� � ������� �
������ ������ ���.
��. �����
close(2), creat(2), dup(2), exec(2), fork(2), open(2),
pipe(2), fcntl(5).
�����������
��� �������� ���������� ���������� ������ � �����������
�� �������� cmd ������������ ��������� ��������:
- F_DUPFD ����� ���������� �����.
- F_GETFD �������� ����� (��������� ������ ������� ���).
- F_SETFD ��������, �������� �� -1.
- F_GETFL �������� ������ ������� �����.
- F_SETFL ��������, �������� �� -1.
- F_GETLK ��������, �������� �� -1.
- F_SETLK ��������, �������� �� -1.
- F_SETLKW ��������, �������� �� -1.
� ������ ������ ������������ -1, � ���������� errno
������������� ��� ������.
���������������
��� ��� � ������� ���������� errno ����� �������������
�������� EAGAIN ������ EACCES � ������, ���� �������
����� ��� ���������� ������ ���������, ��� ����������
����������� ���������� �������� ������� ������� � ������������ ��� ���� ������.