Provided by: manpages-ru_0.98-4_all bug

НАЗВАНИЕ

       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