В современных операционных системах, совместимых с POSIX , программа, которой необходимо получить доступ к данным из файла , хранящегося в файловой системе, использует системный вызов read . Файл идентифицируется дескриптором файла , который обычно получается из предыдущего вызова open . Этот системный вызов считывает данные в байтах , количество которых указывается вызывающей стороной, из файла и сохраняет их в буфере, предоставленном вызывающим процессом.
Системный вызов read принимает три аргумента:
Интерфейс системного вызова read стандартизирован спецификацией POSIX. Данные из файла считываются путем вызова функции read:
ssize_t read ( int fd , void * buf , size_t count );
Возвращаемое значение — это количество прочитанных байтов (ноль указывает на конец файла ), а позиция файла увеличивается на это число. Это не ошибка, если это число меньше запрошенного количества байтов; это может произойти, например, потому, что в данный момент доступно меньше байтов (возможно, потому, что мы были близки к концу файла, или потому, что мы читаем из канала , или из терминала ), или потому, что системный вызов был прерван сигналом .
В качестве альтернативы при возникновении ошибки возвращается -1, в таком случае errno устанавливается соответствующим образом, и далее не указывается, изменяется ли позиция файла (если таковая имеется).