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

NUME

       lseek - repoziționarea indicatorului de poziție pentru citirea/scrierea fișierului

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <unistd.h>

       off_t lseek(int fd, off_t offset, int whence);

DESCRIERE

       lseek()  repoziționează  indicatorul  poziției  de  fișier  al  descrierii  fișierului deschis asociat cu
       descriptorul de fișier fd la argumentul offset în conformitate cu directiva whence după cum urmează:

       SEEK_SET
              Indicatorul de poziție al fișierului este definit la offset octeți.

       SEEK_CUR
              Indicatorul de poziție al fișierului este definit la locația sa curentă plus offset octeți.

       SEEK_END
              Indicatorul de poziție al fișierului este definit la dimensiunea fișierului plus offset octeți.

       lseek() permite ca indicatorul de poziție al fișierului să fie stabilit dincolo de  sfârșitul  fișierului
       (dar  acest  lucru  nu  modifică  dimensiunea  fișierului).  Dacă  ulterior se scriu date în acest punct,
       citirile ulterioare ale datelor din spațiu (o „gaură”) returnează octeți nuli  („\0”)  până  când  datele
       sunt scrise efectiv în spațiu.

   Căutarea datelor și a găurilor din fișiere
       Începând cu Linux 3.1, Linux acceptă următoarele valori suplimentare pentru whence:

       SEEK_DATA
              Ajustează indicatorul de poziție al fișierului la următoarea locație din fișier mai mare sau egală
              cu  offset care conține date. Dacă offset indică date, atunci indicatorul de poziție al fișierului
              este stabilit la offset.

       SEEK_HOLE
              Ajustează indicatorul de poziție al fișierului la următoarea gaură din fișier mai mare  sau  egală
              cu  offset.  Dacă  offset  indică mijlocul unei găuri, atunci indicatorul de poziție al fișierului
              este stabilit la offset. Dacă nu există nicio gaură după offset, atunci indicatorul de poziție  al
              fișierului este ajustat la sfârșitul fișierului (de exemplu, există o gaură implicită la sfârșitul
              oricărui fișier).

       În ambele cazuri de mai sus, lseek() eșuează dacă offset indică după sfârșitul fișierului.

       Aceste  operații permit aplicațiilor să cartografieze găurile dintr-un fișier dispers alocat. Acest lucru
       poate fi util pentru aplicații precum instrumentele de copie de rezervă a fișierelor, care pot  economisi
       spațiu  la crearea copiilor de rezervă și pot păstra găurile, dacă dispun de un mecanism de descoperire a
       găurilor.

       În sensul acestor operații, o gaură este o secvență de zerouri care (în mod normal) nu a fost alocată  în
       spațiul  de  stocare  subiacent  al fișierului. Cu toate acestea, un sistem de fișiere nu este obligat să
       raporteze găurile, astfel încât aceste operații  nu  sunt  un  mecanism  garantat  pentru  cartografierea
       spațiului  de  stocare  alocat  efectiv  unui  fișier; (în plus, o secvență de zerouri care a fost scrisă
       efectiv în spațiul de stocare subiacent poate să nu fie raportată ca o gaură). În cea mai  simplă  punere
       în  aplicare,  un  sistem  de  fișiere  poate  susține  aceste  operații făcând ca SEEK_HOLE să returneze
       întotdeauna poziția de la sfârșitul fișierului și făcând ca SEEK_DATA  să  returneze  întotdeauna  offset
       (adică,  chiar  dacă  locația la care se referă offset este o gaură, se poate considera că aceasta constă
       din date care sunt o secvență de zerouri).

       Macrocomanda de testare a caracteristicilor _GNU_SOURCE trebuie  definită  pentru  a  obține  definițiile
       SEEK_DATA și SEEK_HOLE din <unistd.h>.

       Operațiile SEEK_HOLE și SEEK_DATA sunt acceptate pentru următoarele sisteme de fișiere:

       •  Btrfs (începând cu Linux 3.1)

       •  OCFS (începând cu Linux 3.2)

       •  XFS (începând cu Linux 3.5)

       •  ext4 (începând cu Linux 3.8)

       •  tmpfs(5) (începând cu Linux 3.8)

       •  NFS (începând cu Linux 3.18)

       •  FUSE (începând cu Linux 4.5)

       •  GFS2 (începând cu Linux 4.15)

VALOAREA RETURNATĂ

       La  finalizarea  cu  succes,  lseek()  returnează locația indicatorului de poziție rezultată, măsurată în
       octeți de la începutul fișierului. În caz de eroare, este returnată valoarea (off_t) -1, iar  errno  este
       configurată pentru a indica eroarea.

ERORI-IEȘIRE

       EBADF  fd nu este un descriptor de fișier deschis.

       EINVAL whence  nu  este  valid.  Sau: poziția fișierului rezultat ar fi negativă sau dincolo de sfârșitul
              unui dispozitiv explorabil.

       ENXIO  whence este SEEK_DATA sau SEEK_HOLE, iar offset se află dincolo de sfârșitul fișierului sau whence
              este SEEK_DATA și offset se află într-o gaură la sfârșitul fișierului.

       EOVERFLOW
              Poziția din fișier rezultată nu poate fi reprezentată într-un off_t.

       ESPIPE fd este asociat cu o conductă, un soclu sau o FIFO (conductă cu nume).

VERSIUNI

       În Linux, utilizarea lseek() pe un dispozitiv de terminal eșuează cu eroarea ESPIPE.

STANDARDE

       POSIX.1-2008.

ISTORIC

       POSIX.1-2001, SVr4, 4.3BSD.

       SEEK_DATA și SEEK_HOLE sunt extensii non-standard prezente și în Solaris, FreeBSD și  DragonFly  BSD;  se
       propune includerea lor în următoarea revizuire POSIX (ediția 8).

NOTE

       Consultați  open(2)  pentru  o discuție a relației dintre descriptorii de fișiere, descrierile de fișiere
       deschise și fișiere.

       Dacă fanionul de stare a fișierului O_APPEND este activat la descrierea  fișierului  deschis,  atunci  un
       write(2)  întotdeauna  mută  indicatorul  de poziție al fișierului la sfârșitul fișierului, indiferent de
       utilizarea lseek().

       Unele dispozitive sunt incapabile de căutare și POSIX nu specifică  care  dispozitive  trebuie  să  ofere
       suport pentru lseek().

CONSULTAȚI ȘI

       dup(2), fallocate(2), fork(2), open(2), fseek(3), lseek64(3), posix_fallocate(3)

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  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.

Pagini de manual de Linux 6.9.1                   15 iunie 2024                                         lseek(2)