[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Запись в файл

Системные вызовы write(2) и writev(2) записывают данные в открытый
файл. write(2) записывает данные из единого буфера, а writev(2)
позволяет осуществлять разбросанную запись из нескольких областей
памяти одним вызовом. Аргументы для этих вызовов:
   fildes файловый дескриптор,  полученный при  предшествующем  вызове
          open(2) с флагами O_WRONLY или O_RDWR.

   buf    буфер с  записываемыми байтами.  Этот  аргумент  может  быть
          указателем или именем символьного массива.

   nbyte  является  максимальным   числом  байт,   которые  необходимо
          считать. Однако,  меньшее число байт может быть прочитано на
          самом деле.

   iov    указывает на  массив структур  struct iovec,  со  следующими
          полями:

          caddr_t iov_base;
          int iov_len;

          Каждая  структура  iovec  содержит  адрес  и  длину  области
          памяти, откуда будут записаны байты вызовом writev(2).

   iovcnt количество структур iovec.

Значение, возвращаемое write(2) и writev(2), показывает количество на
самом деле записанных байт. Если достигнут предел размера файла (см.
ulimit(2)), количество записанных байт будет меньше, чем nbyte.
Поскольку read(2) и write(2) являются системными вызовами, их
использование ведет к накладным расходам, связанным со всеми
системными вызовами. При чтению/записи дисковых файлов эти вызовы
наиболее эффективны, если данные считываются блоками. Для
чтения/записи одного байта эффективнее использовать стандартные
библиотечные функции.
Новое в SVR4: writev(2)
                            ЗАПИСЬ В ФАЙЛ
write(2)

ИМЯ

      write - запись в файл

ИСПОЛЬЗОВАНИЕ

      #include <unistd.h>
      int write( int fildes,
          const void *buf, unsigned nbyte);

      #include <sys/types/h>
      #include <sys/uio.h>

      int writev(int fildes,
          const struct iover *iov, int iovcnt);

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

      успех - количество записанных байт

      неуспех - -1 и errno установлена