PREAD(2)

ИМЯ
pread, pwrite - читает из файлового дескриптора или пишет в него по заданному смещению

ОБЗОР
#define _XOPEN_SOURCE 500

#include <unistd.h>

ssize_t pread(int fd, void *buf, size_t count, off_t offset);

ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);

ОПИСАНИЕ
pread() читает count байт из файлового дексриптора fd по смещению offset (от начала файла) в буфер buf. Позиция смещения в файле при этом не изменяется.

pwrite() пишет count байт из буфера buf в файловый дескриптор fd по смещению offset. Позиция смещения в файле при этом не изменяется.

Файл, на который указывает дескриптор fd должен поддерживать позиционирование.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
В случае успеха, возвращается количество прочитанных или записанных байт (ноль говорит о том, что ничего не было записано в случае pwrite или что достигнут конец файла в случае pread), или -1 в случае ошибки, при этом значение errno содержит ошибку.

ОШИБКИ
pread может вернуть ошибку и установить errno в любое значение из тех, что устанавливаются для read(2) или lseek(2). pwrite может вернуть ошибку и установить errno в любое значение из тех, что устанавливаются для write(2) или lseek(2).

СООТВЕТСТВИЕ СТАНДАРТАМ
Unix98

ИСТОРИЯ
Системные вызовы pread и pwrite были добавлен в Linux начиная с версии 2.1.60; записи в таблице системных вызовов для i386 были добавлены в 2.1.69. Поддержка libc (включая эмуляцию на старых ядрах, без этих системных вызовов) была добавлена в glibc 2.1.

СМОТРИ ТАКЖЕ
read(2), write(2), lseek(2)

ПЕРЕВОД
Перевёл с английского Виктор Вислобоков <corochoone@perm.ru> 2004