read

READ(2)                  Руководство программиста Linux                  READ(2)



НАЗВАНИЕ
       read - читает из файлового дескриптора

КРАТКОЕ ОПИСАНИЕ
       #include <unistd.h>

       ssize_t read(int fd, void *buf, size_t count);

ОПИСАНИЕ
       read() пытается читать из файлового дескриптора fd байты в количестве
       count в буфер, начинающийся по адресу buf.

       Если count равен нулю, то read() возвращает ноль и ничего не делает.
       Если count больше, чем SSIZE_MAX, то результат неопределен.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
       При успешном завершении возвращается количество байт, которые были
       прочитаны (ноль означает конец файла), а позиция в файле увеличивается на
       это значение.  Если количество прочитанных байт меньше, чем количество
       запрошенных, то это не считается ошибкой: например, мы могли читать
       вблизи конца файла, или же из трубы, или с терминала, или же read() был
       прерван сигналом.  В случае ошибки возвращается -1, а errno
       устанавливается должным образом.  В этом случае позиция файла
       неопределена.


ОШИБКИ
       EINTR   Системный вызов был прерван сигналом до того, как был прочитан
               хотя бы байт.

       EAGAIN  Был запрошен неблокирующий ввод-вывод с помощью O_NONBLOCK, и нет
               данных, немедленно доступных для чтения.

       EIO     Ошибка ввода-вывода.  Это может произойти, например, если
               процесс, находящийся в фоновой группе процессов, пытается читать
               с контролирующего терминала, и игнорирует или блокирует сигнал
               SIGTTIN, или же его группа процессов осталась без родителя.  Это
               может также случиться, если произошла низкоуровневая ошибка
               ввода-вывода при чтения с диска или ленты.

       EISDIR  fd ссылается на каталог.

       EBADF   fd не является допустимым дескриптором файлов или не открыт для
               чтения.

       EINVAL  fd связан с объектом, неприспособленным для чтения.

       EFAULT  buf указывает за пределы доступного адресного пространства.

       Могут также возникнуть другие ошибки, в зависимости от объекта,
       связанного с fd.  POSIX позволяет системному вызову read, который был
       прерван после чтения первого куска запрошенных данных, вернуть -1
       (устанавливая errno в EINTR) или количество уже прочитанных байт.

СООТВЕТСТВИЕ СТАНДАРТАМ
       SVr4, SVID, AT&T, POSIX, X/OPEN, BSD 4.3

ОГРАНИЧЕНИЯ
       На файловых системах NFS чтение небольших порций данных обновляет отметки
       времени только в первый раз, последующие операции чтения не делают этого.
       Это вызвано кэшированием атрибутов с клиентской стороны, потому что
       большинство (если не все) клиентов NFS предоставляют серверу обновлять
       время доступа, а запросы на чтение, которые удовлетворяются из
       клиентского кэша, не вызывают обновления времени доступа, потому что
       данные не читаются с сервера.  Семантика UNIX может быть достигнута
       запретом кэширования атрибутов, но в большинстве случаев это увеличит
       нагрузку на сервер и уменьшит производительность.

СМОТРИ ТАКЖЕ
       readdir(2), write(2), fcntl(2), close(2), lseek(2), select(2),
       readlink(2), ioctl(2), fread(3).

ПЕРЕВОД
       Copyright (C) Alexey Mahotkin <alexm@hsys.msk.ru> 1999



Linux 2.0.32                      July 12, 1997                          READ(2)