MAN read 2
Материал из Gentoo Linux Wiki
- Вернуться в раздел мануалов
Содержание |
[править] Название
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 устанавливается должным образом. В этом случае позиция файла неопределена.
[править] Ошибки
0.8i 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
[править] Комментарии к man файлу
Hey Emacs! This file is -*- nroff -*- source.
This manpage is Copyright (C) 1992 Drew Eckhardt;
1993 Michael Haardt, Ian Jackson.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one
Since the Linux kernel and libraries are constantly changing, this
manual page may be incorrect or out-of-date. The author(s) assume no
responsibility for errors or omissions, or for damages resulting from
the use of the information contained herein. The author(s) may not
have taken the same level of care in the production of this manual,
which is licensed free of charge, as they might when working
professionally.
Formatted or processed versions of this manual, if unaccompanied by
the source, must acknowledge the copyright and authors of this work.
Modified Sat Jul 24 00:06:00 1993 by Rik Faith <faith@cs.unc.edu>
Modified Wed Jan 17 16:02:32 1996 by Michael Haardt
<michael@cantor.informatik.rwth-aachen.de>
Modified Thu Apr 11 19:26:35 1996 by Andries Brouwer <aeb@cwi.nl>
Modified Sun Jul 21 18:59:33 1996 by Andries Brouwer <aeb@cwi.nl>
Modified Fri Jan 31 16:47:33 1997 by Eric S. Raymond <esr@thyrsus.com>
Modified Sat Jul 12 20:45:39 1997 by Michael Haardt
<michael@cantor.informatik.rwth-aachen.de>
