|
��������
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 ����������� �������� � ��������� ������� ������� ����� �������� ��� ���������, ���� ��������� ���� �� ���� �� ��������� �������:
��� ������� �������� ������� ���������� ����, ��� ��������� ������������ ������ ����� [��. 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 ������������� ��� ������
|