Readdir 3 C -funksjon

Readdir 3 C -funksjon

Når en naiv bruker begynner å lære om operativsystemet, får han/hun vite om filsystemet til det systemet. En katalog er egentlig en spesiell type fil som oppfører seg som en database med et hvilket som helst operativsystem som Windows, Linux, UNIX, etc. Filsystemet til media definerer hvordan filene er kategorisert og tilgjengelig. Tilsvarende lagres all den informasjonen i katalogen, inkludert filens fysiske beliggenhet, navn, dato og tidsstempler, privilegier og andre nødvendige detaljer.

Readdir () -funksjonen til POSIX i Linux -systemet har vært kjent for å ha lest alle filene og mappene fra noen spesifikke katalog. Innenfor denne opplæringen vil vi se på bruken av readdir -funksjonen i Kali Linux.

Vi må bruke “Dirent.h ”headerfil. Før du leser dataene fra en bestemt katalog, må du åpne dem. Bruk OpenDir () -funksjonen for å få tilgang til en katalog. Den er skrevet som følger i overskriftsfilen “Dirent.h ”. Men vi snakker om readdir () -funksjonen her. For å skaffe en tilgang til katalogen som vi skal lese, må vi bruke OpenDir () -funksjonen. Overskriftsfilen “Dirent.H ”inneholder definisjonene for begge funksjonene. Før du fortsetter, må vi være kjent med syntaks for readdir () -funksjonen. Følgende er syntaks og nødvendige toppfiler:

  • #inkludere
  • #inkludere
  • struct dirent *readdir (dir *dirp);

Eksempel 1:

Bruk VIM eller annen redaktør av din preferanse for å bygge eller åpne en fil. I dette tilfellet, readdirfile.C brukes som filnavn og VIM -redaktøren er ansatt. Når vi skriver denne kommandoen og trykker på Enter -knappen på tastaturet, åpner VIM -redigereren filen. Følgende sitert kommando utføres i Kali Linux:


For å åpne innsatsmodus i VIM, trykk på "Escape" -tasten på tastaturet og trykk deretter på "I" -knappen for å få opp innsatsmodus. Begynn da, som vist på følgende skjermbilde, begynner å skrive koden i filen. Vi inkluderer ganske enkelt toppfilene, definerer og avfinerer POSIX -kilden i de seks første kodelinjene.

Hovedfunksjonen begynner deretter å konstruere en DIR -peker som heter Directory, som kreves siden OpenDir () -metoden returnerer en DIR -peker. Denne funksjonen krever en strengbane til en katalog. I den følgende linjen definerer vi oppføringsdirekte strukturpunkt som senere blir brukt i ReadDir () -funksjonen for å vise navnet på katalogen i den spesifiserte gjeldende katalogen. Som du kan se i IF -uttalelsen, brukte vi OpenDir -funksjonen som tar '/' -tegnet og peker på den gjeldende katalogens rotkatalog.

Vi sjekker om rotkatalogen ikke er null i den betingede uttalelsen. Hvis det er det, viser vi en feil ved å bruke Perror -funksjonen. "Innholdet i roten:" -linjen er skrevet ut i andre uttalelser. Deretter bruker du en stundsløyfe på ReadDir -funksjonen, og sjekk at den ikke returnerer NULL, noe som indikerer at det ikke er flere kataloger i den spesifiserte katalogen eller mappen. Navnet på katalogen er skrevet ut ved hjelp av en pekervariabel oppføring i While Loop -blokken. Etter at du har gjort hva du vil med katalogen, kan du bruke den lukkede () -funksjonen til POSIX utenfor While Loop -blokken for å lukke den åpne katalogen. La oss lagre følgende kode først:


Skriv kommandoen som vist i følgende bilde for å kompilere C -koden med GCC -kompilatoren og lagre utdataene til den nødvendige utgangs- eller objektfilen. Hvis du ikke skriver kommandoen etter -o -flagget, vil kompilatoren lagre filen din som en "a.ut ”-filen som standard. Hvis hendelsen som outputfilen allerede eksisterer i katalogen, vil denne kommandoen overskrive den. Vi bygde en "readdirfile.ut "outputfil i vårt scenario. Hvis den samles riktig uten feil eller advarsler i kommandolinjen, bare kjør den. Ellers fikser du koden og kompilerer den på skallet på nytt. Følgende sitert kommando utføres i Kali Linux:


For å kjøre utdatafilen, bruk følgende kommando som viser filens utdata på skjermen eller andre kommandoer som finnes i koden. Readdir -metoden i koden vår viser navnene på rotmappens kataloger. Dette viser også filene som finnes i katalogen. Følgende sitert kommando utføres i Kali Linux:

Eksempel 2:

Bruk nå VIM -redigereren til å opprette en ny fil som heter “ReadDireFile2.C ”. Dette vil opprette en ny fil og åpne den i redaktøren. Trykk på "Escape" og treff 'I' -tasten på tastaturet for å aktivere innsats-/redigeringsmodus i redaktøren. Følgende sitert kommando utføres i Kali Linux:


Etter det, kopier følgende kodelinjer. Den første koden er den samme, men variabelnavnene endres. Den nåværende arbeidskatalogstien leveres til OpenDir -funksjonen ved hjelp av DOT (.) karakter i denne koden. Etter det, se om det returnerer null eller ikke. Hvis den returnerer null, bruk Perror -funksjonen til å vise feilen og gå ut av hovedfunksjonen. Int Files -variabelen brukes til å vise fil- og mappenummerering i den gjeldende katalogen. Vi økte denne variabelen med 1 i mens Loop, og brukte deretter Printf -kommandoen til å skrive ut verdien sammen med navnet på filen eller mappen. Utenfor stundsløyfen, lukk katalogen ved hjelp av den lukkede metoden.


Nå, kompiler koden og lagrer utdataene i “Reddirfile2.ut ”-filen. Følgende sitert kommando utføres i Kali Linux.


Kommandoen “LS” kan brukes til å vise en liste over alle filene og mappene i en katalog. Følgende sitert kommando utføres i Kali Linux:


Etter å ha utført utdatafilen, viser kompilatoren alle filene i terminalen som ligger i den gjeldende katalogen. Følgende sitert kommando utføres i Kali Linux:

Konklusjon

Ethvert filsystem kan bestå mange filer og kataloger som inneholder mer data i dem. Denne artikkelen handler om bruken av readdir -funksjonen til C for å lese alle filene og mappene i den gjeldende arbeidskatalogen til systemet.