Manpages

ИМЯ

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 [AT] perm.ru> 2004