pread(2)

NUME
pread, pwrite - citește dintr-un descriptor de fișier sau scrie într-un descriptor de fișier la o anumită poziție

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#include <unistd.h>

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

    Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

pread(), pwrite():
    _XOPEN_SOURCE >= 500
        || /* Începând cu glibc 2.12: */ _POSIX_C_SOURCE >= 200809L

DESCRIERE
pread() citește până la count octeți din descriptorul de fișier fd la poziția offset (de la începutul fișierului) în memoria tampon care începe la buf. Poziția din fișier a indicatorului de citire nu se modifică.

pwrite() scrie până la count octeți din memoria tampon care începe la buf în descriptorul de fișier fd la poziția offset. Poziția din fișier a indicatorului de scriere nu se modifică.

Fișierul la care face referire fd trebuie să permită căutarea.

VALOAREA RETURNATĂ
În caz de succes, pread() returnează numărul de octeți citiți (o valoare zero indică sfârșitul fișierului), iar pwrite() returnează numărul de octeți scriși.

Rețineți că nu este o eroare ca un apel reușit să transfere mai puțini octeți decât cei solicitați (a se vedea read(2) și write(2)).

În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI-IEȘIRE
pread() poate eșua și poate configura errno la orice eroare specificată pentru read(2) sau lseek(2). pwrite() poate eșua și poate configura errno la orice eroare specificată pentru write(2) sau lseek(2).

STANDARDE
POSIX.1-2024.

ISTORIC
POSIX.1-2001.

Adăugat în Linux 2.1.60; intrările din tabelul de apeluri de sistem i386 au fost adăugate în Linux 2.1.69. Suportul pentru biblioteca C (inclusiv emulația folosind lseek(2) pe nuclee mai vechi fără apelurile de sistem) a fost adăugat în glibc 2.1.

  Diferențe între biblioteca C și nucleu
În Linux, apelurile de sistem subiacente au fost redenumite în Linux 2.6: pread() a devenit pread64(), iar pwrite() a devenit pwrite64(). Numerele apelurilor de sistem au rămas aceleași. Funcțiile de învăluire glibc pread() și pwrite() tratează în mod transparent această schimbare.

Pe unele arhitecturi pe 32 de biți, semnătura de apelare pentru aceste apeluri de sistem diferă, din motivele descrise în syscall(2).

NOTE
Apelurile de sistem pread() și pwrite() sunt deosebit de utile în aplicațiile cu multiple fire de execuție. Ele permit mai multor fire de execuție să efectueze operații de In/Ieș pe același descriptor de fișier fără a fi afectate de modificările aduse la poziția din fișier de către alte fire de execuție.

ERORI
POSIX prevede că deschiderea unui fișier cu fanionul O_APPEND nu trebuie să aibă niciun efect asupra locației în care pwrite() scrie datele. Cu toate acestea, în Linux, dacă un fișier este deschis cu O_APPEND, pwrite() adaugă datele la sfârșitul fișierului, indiferent de valoarea lui offset.

CONSULTAȚI ȘI
lseek(2), read(2), readv(2), write(2)

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.