pread






pread, pwrite − ÑиÑÐ°ÐµÑ Ð¸Ð· Ñайлового
деÑкÑипÑоÑа или пиÑÐµÑ Ð² него по
Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ ÑмеÑениÑ

500#define_XOPEN_SOURCE

#include<unistd.h>

, void *ssize_t pread(int fd

, const void *ssize_t pwrite(int fd

pread() ÑиÑÐ°ÐµÑ count Ð±Ð°Ð¹Ñ Ð¸Ð· Ñайлового
декÑÑипÑоÑа fd по ÑмеÑÐµÐ½Ð¸Ñ offset (оÑ
наÑала Ñайла) в бÑÑÐµÑ ÐозиÑÐ¸Ñ ÑмеÑениÑ
в Ñайле пÑи ÑÑом не изменÑеÑÑÑ.

     pwrite() пиÑÐµÑ count Ð±Ð°Ð¹Ñ Ð¸Ð· бÑÑеÑа buf в
ÑайловÑй деÑкÑипÑÐ¾Ñ fd по ÑмеÑениÑ
ÐозиÑÐ¸Ñ ÑмеÑÐµÐ½Ð¸Ñ Ð² Ñайле пÑи ÑÑом не
изменÑеÑÑÑ.

     Файл, на коÑоÑÑй ÑказÑваеÑ
деÑкÑипÑÐ¾Ñ 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.













                             ‐2‐




ÐеÑевÑл Ñ Ð°Ð½Ð³Ð»Ð¸Ð¹Ñкого ÐикÑоÑ
ÐиÑлобоков <corochoone@perm.ru> 2004