Provided by:
manpages-ru_0.98-4_all 
НАЗВАНИЕ
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