stringtranslate.com

чтение (системный вызов)

В современных операционных системах, совместимых с POSIX , программа, которой необходимо получить доступ к данным из файла , хранящегося в файловой системе, использует системный вызов read . Файл идентифицируется дескриптором файла , который обычно получается из предыдущего вызова open . Этот системный вызов считывает данные в байтах , количество которых указывается вызывающей стороной, из файла и сохраняет их в буфере, предоставленном вызывающим процессом.

Системный вызов read принимает три аргумента:

  1. Дескриптор файла.
  2. Буфер, в котором будут сохранены считанные данные.
  3. Количество байтов, которые необходимо прочитать из файла.

Использование POSIX

Интерфейс системного вызова read стандартизирован спецификацией POSIX. Данные из файла считываются путем вызова функции read:

ssize_t read ( int fd , void * buf , size_t count );      

Возвращаемое значение — это количество прочитанных байтов (ноль указывает на конец файла ), а позиция файла увеличивается на это число. Это не ошибка, если это число меньше запрошенного количества байтов; это может произойти, например, потому, что в данный момент доступно меньше байтов (возможно, потому, что мы были близки к концу файла, или потому, что мы читаем из канала , или из терминала ), или потому, что системный вызов был прерван сигналом .

В качестве альтернативы при возникновении ошибки возвращается -1, в таком случае errno устанавливается соответствующим образом, и далее не указывается, изменяется ли позиция файла (если таковая имеется).

Смотрите также

Ссылки

Внешние ссылки