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

WRITE(2)

��������
write - ������ � ����

���������

        int write (fildes, buf, nbyte)
        int fildes;
        char *buf;
        unsigned nbyte;

��������
�������� fildes - ��� ���������� �����, ���������� ����� ���������� ��������� ������� creat(2), open(2), dup(2), fcntl(2) ��� pipe(2).

��������� ����� write �������� �������� nbyte ���� �� ������, �� ������� ��������� �������� buf, � ����, ��������������� � ������������ fildes.

��� ���������, ����������� ����������������, ��������� ����� write ��������� ������ � ����, ������� � ��������� ������� �������, ���������������� � ������������ fildes. ����� ���������� ������ ��������� ������� ������� ����� ������������� �� ���������� ���������� ����.

��� ��������� ��� ����������� ���������������� ������ ������ ����������� � ������� �������. �������� ��������� ������� ������� ����� ��� ������ ���������� ������������.

���� ���������� ���� ������� ����� O_APPEND, �� ����� ������ ������� ��������� ������� ������� ��������������� �� ����� �����.

��� ������� ������, ���� ���������� ���� ������� ����� O_SYNC, ��������� ����� write ������� ����������� ���������� ��� ������ �����, ��� � ��� �������. ��� ����� ������������� ��� ����������� ����������, � ������� ��������� �������������� ���������� ���� �� ���� ������ ������������������. ��� ������� ����������� ������, ���� ���������� ���� O_SYNC, ���������� ������ write �� ���������� �� ��� ���, ���� ������ �� ����� ��������� ���������.

������ � ������� ���� �����������, ���� ���������� ���� ����� ���������� [��. chmod(2)] � ��� ������� �����, � ������� ������������ ������� ������, ������������ ������ ���������. � ���� ������, ���� �� ���������� ���� O_NDELAY, ������������ ������� ������������� �� ������ ���������� ��������.

��� ��������������� [��. intro(2)] �� ���������� �������� write ������ ����������� � ������������ ��������� �������� ��������� nbyte ("������ ������"), ���������� ��� ������� ������. ��� �������� ���������� � ������ ������, ��������� � ������. ���� ������ �� ������� � ����� ������������� [��. ����� I_PUSH � streamio(7)], �� ��� �������� �� ����� ���� ����������� ��� �������� �� ���������������� ������. ���� �������� ��������� nbyte ����� � ��������� ��������� ������� ������, �� ������������ nbyte ����, ���� �� �������� ��������� nbyte �� ����� � ���� ��������� � ����������� ������ ������ ����� 0, �� ����� write ����� �������� ������ � ����� ��������� ����� �� �������� ����������� ���������� ����� ������ (������ ���������� �������� ����� ���� ������ �������������). ���� �������� ��������� nbyte �� ����� � ��������� ��������� ������� ������ � ����������� ������ �� ����� 0, �� write ����������� �������� � ����� ������ ERANGE. ������ ������ ������� ����� (�������� ��������� nbyte ����� 0) �������� � ������� �������� ���������� ���� � �������� �������� ��������.

��� ���������������, ���� ���� O_NDELAY �� ���������� � ����� �� ����� ������� ������ (������� ������ ����� � ���� ���������� ������), ������������ ������� ������������� �� ��� ���, ���� ����� �� ����� ����� � ������ ������. ������������� ���� O_NDELAY ������������� ������������, � � ��������� ������ ����� write ����������� ��������. ���� ���� O_NDELAY ���������� � � ������, ����� ��������� �������, � ���������� �������� ����� �������� ��������� ������, ����� ������ ��������, ���������� ���������� ������ write ����������� � �������� ���������� ���������� ����.

��������� ����� write ����������� �������� � ��������� ������� ������� ����� �������� ��� ���������, ���� ��������� ���� �� ���� �� ��������� �������:

[EAGAIN]
����������� ����� ����� ���������� ����� � O_NDELAY, � ��������� ������� ����� ������������.
[EAGAIN]
����� ���������� ��������� ������, ��������������� ��� ��������������� �����/������, �������� ��������� �������������.
[EAGAIN]
��� ������������� ����� O_NDELAY ������� ������ � �����, ������� �� ����� ������� ������.
[EBADF]
�������� fildes �� �������� ���������� ������������ �����, ��������� ��� ������.
[EDEADLK]
������� �������� ������ �������� � ������.
[EFAULT]
�������� buf ��������� �� ������� ����������� �������� ��������� ������������.
[EFBIG]
���������� ����������� ������� ������ [��. ulimit(2)].
[EINTR]
�� ����� ���������� ���������� ������ ���������� ������.
[EINVAL]
������� ������ � �����, ������� ������������������.
[ENOLCK]
��� ���������� ����� � ��������� ������� ����������.
[ENOLINK]
Fildes �������� ������������ ����� �� ��������� ����������, ����� � ������� � ������ ������ ���.
[ENOSPC]
��� ������� ������ � ������� ���� ��� ���������� ����� �� ����������.
[ENXIO]
��������� ��� ������ � ����� stream.
[EPIPE ��� ������ SIGPIPE] ������� ������ � �����, ������� �� ������ �����-���� ��������� �� ������.
[ERANGE]
������� ������ � ����� ��� �������� nbyte, ��������� �� ������� ���������� �������� ������, ��� ��������� ���������� ���������� ������� ������.

��� ������� �������� ������� ���������� ����, ��� ��������� ������������ ������ ����� [��. ulimit(2)] ��� ������� ���������� ������������ �� ����������, ������������ ������� ����, ������� ��������. ��������, ����� � ����� �������� 20 ���� �� ���������� ������������� �������. ����� ������� ������ � ���� ���� 512 ���� �������� � ����, ��� ������� ������� 20 ���� � ��������� ����� write ���������� �������� 20. ����������� ������� ������ ���������� ���������� ���� �������� � ������ (�� ����������� �������, ��������� ����).

��� ������������� ����� O_NDELAY ������ � ������ ����� �������� � �������� �������� 0. ���� ���� O_NDELAY �� ����������, ������ � ������ ����� ������������� �� ��� ���, ���� �� ����������� ������������ ��� ������.

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

��. �����
creat(2), dup(2), fcntl(2), intro(2), lseek(2), open(2), pipe(2), ulimit(2).

�����������
��� �������� ���������� ��������� ����� ���������������� ������ ����� - ���������� ������� ���������� ����; � ������ ������ ������������ -1, � ���������� errno ������������� ��� ������
Comments: [email protected]
Designed by Andrey Novikov
Copyright © CIT