.\" -*- coding: UTF-8 -*- .\" Copyright (C) 1999 Joseph Samuel Myers. .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH pread 2 "30 марта 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ pread, pwrite \- чтение или запись информации из файлового дескриптора согласно заданному смещению .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .PP \fBssize_t pread(int \fP\fIfd\fP\fB, void \fP\fIbuf\fP\fB[.\fP\fIcount\fP\fB], size_t \fP\fIcount\fP\fB,\fP \fB off_t \fP\fIoffset\fP\fB);\fP \fBssize_t pwrite(int \fP\fIfd\fP\fB, const void \fP\fIbuf\fP\fB[.\fP\fIcount\fP\fB], size_t \fP\fIcount\fP\fB,\fP \fB off_t \fP\fIoffset\fP\fB);\fP .fi .PP .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .PP \fBpread\fP(), \fBpwrite\fP(): .nf _XOPEN_SOURCE >= 500 || /* начиная с glibc 2.12: */ _POSIX_C_SOURCE >= 200809L .fi .SH ОПИСАНИЕ \fBpread\fP() читает максимум \fIcount\fP байтов из файлового дескриптора \fIfd\fP, начиная со смещения \fIoffset\fP (от начала файла), в буфер, начиная с \fIbuf\fP. Текущая позиция файла не изменяется. .PP \fBpwrite\fP() записывает максимум \fIcount\fP байтов из буфера \fIbuf\fP в файловый дескриптор \fIfd\fP , начиная со смещения \fIoffset\fP. Текущая позиция файла не изменяется. .PP Файл, заданный в \fIfd\fP, должен позволять изменение смещения. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении \fBpread\fP() возвращается количество считанных байт (ноль указывает на конец файла), а \fBpwrite\fP() — количество записанных байт. .PP Заметим, что для успешного выполнения не считается ошибкой передача меньшего количества байт чем запрошено (смотрите \fBread\fP(2) и \fBwrite\fP(2)). .PP В случае ошибки возвращается \-1, а \fIerrno\fP устанавливается в значение ошибки. .SH ОШИБКИ Вызов \fBpread\fP() может завершиться неудачно и записать в \fIerrno\fP один из кодов ошибки, определённых для \fBread\fP(2) или \fBlseek\fP(2). Вызов \fBpwrite\fP() может завершиться неудачно и записать в \fIerrno\fP один из кодов ошибки, определённых для \fBwrite\fP(2) или \fBlseek\fP(2). .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ POSIX.1\-2001. .PP 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 \fBlseek\fP(2) on older kernels without the system calls) was added in glibc 2.1. .SS "Отличия между библиотекой C и ядром" On Linux, the underlying system calls were renamed in Linux 2.6: \fBpread\fP() became \fBpread64\fP(), and \fBpwrite\fP() became \fBpwrite64\fP(). The system call numbers remained the same. The glibc \fBpread\fP() and \fBpwrite\fP() wrapper functions transparently deal with the change. .PP На некоторых 32\-битных архитектурах интерфейс этих системных вызовов отличается от описанного выше по причинам, указанным в \fBsyscall\fP(2). .SH ЗАМЕЧАНИЯ Системные вызовы \fBpread\fP() и \fBpwrite\fP() особенно полезны в многонитевых приложениях. Они позволяют нескольким нитям выполнять ввод\-вывод в один файловый дескриптор не учитывая изменений файлового смещения, сделанного другими нитями. .SH ДЕФЕКТЫ .\" FIXME . https://bugzilla.kernel.org/show_bug.cgi?id=43178 Согласно POSIX требуется, чтобы открытие файла с флагом \fBO_APPEND\fP не влияло на расположение, по которому \fBpwrite\fP() записывает данные. Однако в Linux, если файл открывается с флагом \fBO_APPEND\fP, \fBpwrite\fP() добавляет данные в конец файла, независимо от значения \fIoffset\fP. .SH "СМ. ТАКЖЕ" \fBlseek\fP(2), \fBread\fP(2), \fBreadv\fP(2), \fBwrite\fP(2) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Alexey, Azamat Hackimov , kogamatranslator49 , Kogan, Max Is , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .