Server for Information Technologies ������ ��������������
������� �������������� ����������
(095) 932-9212, 932-9213, 939-0783
E-mail: [email protected]
������ �������� ����(!) ������������� ���������� 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
������� ����� ���������� ����� � ������ ����������:
  1. ��� ����� - ���� ����������� �� ��������� �������, �� ������� arg.
  2. �� ������������ � ��� �� �������� ������ (��� �������), ��� � �������� ���������� fildes.
  3. � ���� ��� �� ��������� ������� ������� � �����, ��� � � ��������� (�� ���� ��� ��������� ����� ���������).
  4. ��� �� ����� ������� � ����� (������, ������ ��� ������/������).
  5. �� �� ����� ������� ����� (�� ���� ��� ����������� ��������� ����� ����� �������).
  6. ��������������� � ����� ������������ ���� "������� ��� ���������� ������ 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 ������������ ��������� ��������:

� ������ ������ ������������ -1, � ���������� errno ������������� ��� ������.

���������������
��� ��� � ������� ���������� errno ����� ������������� �������� EAGAIN ������ EACCES � ������, ���� ������� ����� ��� ���������� ������ ���������, ��� ���������� ����������� ���������� �������� ������� ������� � ������������ ��� ���� ������.
Comments: [email protected]
Designed by Andrey Novikov
Copyright © CIT