CATEGORII DOCUMENTE |
Accesul direct in fisiere - UNIX
Apelurile read si write descrise anterior asigura un accesul secvential la un fisier. Prin utilizarea apelului sistem lseek procesele pot modifica valoarea deplasamentului din tabela de fisiere, asigurandu-se astfel un acces aleator la fisier, utilizatorul avand posibilitatea sa scrie sau sa citeasca de la orice adresa.
Sintaxa apelului sistem este:
pozitie= lseek(fd, offset, referinta);
unde fd este descriptorul de fisier (returnat de open), referinta indica originea fata de care se stabileste deplasamentul, offset este un numar care indica pozitia finala a deplasamentului fata de referinta, iar pozitie reprezinta deplasamentul de la care va incepe urmatoarea operatie de citire/scriere. Referinta poate fi inceputul fisierului (referinta=0), pozitia curenta (referinta=1) sau sfarsitul fisierului (referinta=2).
#include <fcntl.h>
main(argc,argv)
int argc;
char *argv[ ];
}
Figura 5.10. Exemplu de program care utilizeaza apelul sistem lseek
Spre exemplu, in programul din figura 5.10 un proces deschide un fisier, dupa care ciclic citeste un octet si apeleaza lseek pentru a incrementa valoarea deplasamentului din tabela de fisiere cu 1023 (cu referinta=1). Astfel, programul citeste din fisier octetii cu deplasamentul multiplu de1024. Apelul lseek nu are nimic de a face cu operatia seek care efectueaza pozitionarea bratului discului pe un anumit sector. Pentru a implementa apelul lseek nucleul modifica practic valoarea deplasamentului din tabela de fisiere.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 796
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved