[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Чтение из файла

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

   buf    указывает на  место, в  которое должны  быть помещены  байты
          вызовом read(2). Места должно хватить для nbyte байт.

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

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

          caddr_t   iov_base;
          int       iov_len;

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

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

Значение, возвращаемое read(2) и readv(2) показывает количество байт,
прочитанных на самом деле. Например, в файле осталось 10 байт, а nbyte
равен 15. Значение, возвращаемое read(2) будет 10. Если read(2) будет
вызвана вновь, она вернет 0 - индикация конца файла. Чтение из
специального байт-ориентированного файла также может возвращать
меньшее число байт, чем требуемое. По умолчанию, терминалы буферизуют
ввод. Невозможно прочесть за один раз больше одной строки ввода.
Новое в SVR4: readv(2)
                           ЧТЕНИЕ ИЗ ФАЙЛА
read(2)

ИМЯ

      read - чтение из файла

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

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

      int read( int fildes, void *buf,
          unsigned nbyte);

      int readv(int fildes,
          strcut iovec *iov, int iovcnt);

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

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

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