Provided by: manpages-ru-dev_4.19.0-7_all bug

ИМЯ

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

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <unistd.h>

       ssize_t pread(int fd, void buf[.count], size_t count,
                     off_t offset);
       ssize_t pwrite(int fd, const void buf[.count], size_t count,
                     off_t offset);

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       pread(), pwrite():
           _XOPEN_SOURCE >= 500
               || /* начиная с glibc 2.12: */ _POSIX_C_SOURCE >= 200809L

ОПИСАНИЕ

       pread() читает максимум count байтов из файлового  дескриптора  fd,  начиная  со  смещения
       offset (от начала файла), в буфер, начиная с buf. Текущая позиция файла не изменяется.

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

       Файл, заданный в fd, должен позволять изменение смещения.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       При успешном выполнении pread() возвращается количество считанных байт (ноль указывает  на
       конец файла), а pwrite() — количество записанных байт.

       Заметим,  что  для  успешного выполнения не считается ошибкой передача меньшего количества
       байт чем запрошено (смотрите read(2) и write(2)).

       В случае ошибки возвращается -1, а errno устанавливается в значение ошибки.

ОШИБКИ

       Вызов pread() может завершиться  неудачно  и  записать  в  errno  один  из  кодов  ошибки,
       определённых  для  read(2)  или  lseek(2).  Вызов  pwrite()  может  завершиться неудачно и
       записать в errno один из кодов ошибки, определённых для write(2) или lseek(2).

ВЕРСИИ

       The pread()  and pwrite()  system calls were added in Linux 2.1.60;  the  entries  in  the
       i386 system call table were added in Linux 2.1.69.  C library support (including emulation
       using lseek(2)  on older kernels without the system calls) was added in glibc 2.1.

СТАНДАРТЫ

       POSIX.1-2001, POSIX.1-2008.

ЗАМЕЧАНИЯ

       Системные вызовы pread() и pwrite()  особенно  полезны  в  многонитевых  приложениях.  Они
       позволяют  нескольким  нитям  выполнять  ввод-вывод в один файловый дескриптор не учитывая
       изменений файлового смещения, сделанного другими нитями.

   Отличия между библиотекой C и ядром
       On Linux, the underlying system calls were renamed in Linux 2.6: pread() became pread64(),
       and  pwrite()   became  pwrite64().  The system call numbers remained the same.  The glibc
       pread()  and pwrite()  wrapper functions transparently deal with the change.

       На некоторых  32-битных  архитектурах  интерфейс  этих  системных  вызовов  отличается  от
       описанного выше по причинам, указанным в syscall(2).

ДЕФЕКТЫ

       Согласно   POSIX   требуется,  чтобы  открытие  файла  с  флагом  O_APPEND  не  влияло  на
       расположение,  по  которому  pwrite()  записывает  данные.  Однако  в  Linux,  если   файл
       открывается  с  флагом  O_APPEND,  pwrite()  добавляет данные в конец файла, независимо от
       значения offset.

СМ. ТАКЖЕ

       lseek(2), read(2), readv(2), write(2)

ПЕРЕВОД

       Русский  перевод  этой  страницы  руководства   был   сделан   Alexey,   Azamat   Hackimov
       <azamat.hackimov@gmail.com>,   kogamatranslator49  <r.podarov@yandex.ru>,  Kogan,  Max  Is
       <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если вы обнаружите ошибки в переводе  этой  страницы  руководства,  пожалуйста,  отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.