Provided by: manpages-ro-dev_4.28.0-2_all 

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)