3.3 Funcţii pentru lucrul cu directoare
Conţinutul unui director poate fi obţinut de către procesele care au drept de citire asupra directorului prin operaţii de citire similare cu cele asupra fişierelor. Scrierea într-un director poate fi făcută doar de către sistemul de operare. Structura unui director apare utilizatorului ca o succesiune de structuri (elemente) numite intrări în director. O intrare în director conţine, printre alte informaţii, numele fişierului şi i-node-ul acestuia. Pentru citirea intrărilor unui director există următoarele funcţii:
#include
#include
DIR* opendir(const char* cale);
struct dirent* readdir(DIR* dp);
void rewinddir(DIR* dp);
int closedir(DIR* dp);
Funcţia opendir are ca efect deschiderea directorului, adică pregătirea pentru operaţiile ulterioare de citire a conţinutului lui. Ea returnează un pointer valid dacă deschiderea a reuşit şi NULL în caz de eroare.
Funcţia readdir citeşte la fiecare nou apel al ei, în ordine secvenţială, următoarea intrarea din director: primul apel readdir citeşte prima intrare din director, următorul apel citeşte următoare intrare şi aşa mai departe. Funcţia returnează un pointer valid spre o structură de tip dirent, dacă citirea a reuşit şi NULL în caz contrar (sfârşitul directorului).
Funcţia rewinddir repoziţionează indicatorul din director spre prima intrare din director (începutul directorului).
Funcţia closedir închide un director deschis anterior. Returnează -1 în caz de eroare.
Structura dirent, definită în fişierul dirent.h, conţine cel puţin doi membri:
struct dirent {
ino_t d_fileno; // nr. i-node
char d_name[MAXNAMLEN + 1]; // nume fişier
Dostları ilə paylaş: |