читать (системный вызов)
Эта статья включает список литературы , связанную литературу или внешние ссылки , но ее источники остаются неясными, поскольку в ней отсутствуют встроенные цитаты . ( февраль 2019 г. ) |
В современных POSIX- совместимых операционных системах программа, которой необходимо получить доступ к данным из файла, хранящегося в файловой системе, использует системный вызов read . Файл идентифицируется файловым дескриптором , который обычно получается из предыдущего вызова open . Этот системный вызов считывает данные в байтах , количество которых указано вызывающей стороной, из файла и затем сохраняет в буфер, предоставленный вызывающим процессом.
Системный вызов read принимает три аргумента:
- Дескриптор файла.
- Буфер, в котором будут храниться считанные данные.
- Количество байтов, которые необходимо прочитать из файла.
Использование POSIX
[ редактировать ]Интерфейс системного вызова чтения стандартизирован спецификацией POSIX. Данные из файла считываются вызовом функции чтения:
ssize_t read(int fd, void *buf, size_t count);
Возвращаемое значение представляет собой количество прочитанных байтов (ноль указывает на конец файла ), а позиция файла увеличивается на это число. Это не ошибка, если это число меньше количества запрошенных байтов; это может произойти, например, потому, что сейчас действительно доступно меньше байтов (возможно, потому, что мы были близки к концу файла, или потому, что мы читаем из канала , или из терминала ), или потому, что системный вызов был прерван сигнал .
В качестве альтернативы, -1 возвращается при возникновении ошибки, в таком случае errno устанавливается соответствующим образом, и далее остается неопределенным, изменяется ли позиция файла (если таковая имеется).
См. также
[ редактировать ]Ссылки
[ редактировать ]Внешние ссылки
[ редактировать ]- C_Programming/C_Reference/stdio.h/freadhttp://dx.doi.org/10.1037/0096-3445.111.1.132