ИМЯ
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.
СМОТРИ ТАКЖЕ
ПЕРЕВОД
Перевёл с английского Виктор Вислобоков <corochoone [AT] perm.ru> 2004