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