Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

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

БИБЛИОТЕКА

       Стандартная библиотека языка C (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).

СТАНДАРТЫ

       POSIX.1-2008.

ИСТОРИЯ

       POSIX.1-2001.

       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.

   Отличия между библиотекой 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).

ПРИМЕЧАНИЯ

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

ОШИБКИ

       Согласно 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>,      Darima      Kogan
       <silverdk99@gmail.com>, Max  Is  <ismax799@gmail.com>,  Yuri  Kozlov  <yuray@komyakino.ru>,  Иван  Павлов
       <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот  перевод является свободной программной документацией; он распространяется на условиях общедоступной
       лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику(ам)  по  его(их)  адресу(ам)  электронной  почты  или  по   адресу   списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                         pread(2)