RealPath 3 C -funksjon

RealPath 3 C -funksjon
Mens du jobber med Linux eller Windows -operativsystemer, kan du møte mange filer og kataloger. Alle filene og katalogene til et hvilket som helst operativsystem har en viss vei fra rotkatalogen. Innen mange operativsystemer kan denne banen sees på toppen av filutforskeren for en bestemt fil eller mappe. Posix C -biblioteket kom med "RealPath" -funksjonen for å vise hele og originale banen til en hvilken som helst fil fra den aktuelle gjeldende katalogen. La oss komme i gang innen Kali Linux -operativsystemet.

Eksempel 1:

Innenfor vårt første eksempel vil vi se på den enkle C -koden for å bruke "RealPath" -funksjonen for å få den virkelige og hele veien til noen filer fra systemets nåværende arbeidskatalog. Vi må bruke totalt 6 grunnleggende overskriftsfiler i starten av denne koden som er inkludert i bruken av nøkkelordet "#include". Noen biblioteker er standardbiblioteker for å bruke inngangsstrømmen i koden, noen er her for å bruke strengverdiene, og noen brukes til å utføre unntakshåndtering. Denne kodens hovedfunksjon () definerer en karaktertype-matrise kalt “Buffer” med en innebygd størrelse på “Path Max” eller 0. Denne matrisen brukes til å lagre den virkelige og fulle banen til noen kataloger.

RealPath () -funksjonen tar “noen FILE.txt ”filnavn med“ buffer ”-arrayen som sendes til det som et argument for å lagre hele banen. En peker "bane" av karaktertypen initialiseres for å peke mot adressen til en "buffer" -variabel som inneholder banen til en fil som er gitt av realpath () -funksjonen.

Her kommer "if-elv" -uttalelsen for å sjekke om vi fikk riktig referanse for filstien, eller om "banen" -pekeren er tom. Hvis den returnerer riktig referanse, brukes Printf -funksjonen til å vise teksten “Den komplette filstien til noen FILE.txt: ”sammen med den virkelige banen til den aktuelle filen. Ellers blir den andre uttalelsen utført og Printf -setningen som brukes i den vil kaste en feil ved å bruke "strerror" -funksjonen, og tar "errno" som et argument. Perror -funksjonen brukes til å vise den samme feilen igjen med "realpath" feilnavnet. For å få feilen, avslutter utgangsfunksjonen til denne koden programmet så snart som mulig. La oss lagre vårt første eksempel og kompilere det for å se resultatene.


Vi bruker GCC -kompilatoren for å kompilere RealPath.C -fil med alternativet -o for å generere objektfilen som heter “RealPath.ut ”innenfor den samme arbeidskatalogen. Denne kommandoen er vellykket, og vi har samme navnobjektfil i hjemmet "SRC" i henhold til utdataene fra "LS" -instruksjonen.


Nå utfører vi objektfilen vi nettopp opprettet med "./”Tegn i samme arbeidskatalog. Utgangen fra denne kommandoen viser oss den komplette banen for denne spesielle filen som starter fra rotmappen som “/Home/Linux/SRC/SomeFile.tekst".

Eksempel 2:

La oss komme i gang med et annet eksempel for å bruke RealPath () -funksjonen for å få den virkelige banen til noen filer. Innenfor denne C -koden la vi til de samme 6 topptekstfilene med nøkkelordet "#include". Etter det initialiseres hovedfunksjonen ().tekst". En "faktisk bane" -array brukes til å lagre den virkelige banen til "noen FILE.txt ”-fil med“ +1 ”for å hente banen til en fil nevnt etter den andre“/”-tegn. En annen "PTR" -peker av karaktertypen er definert.

Vi passerer koblingssti -pekervariabelen og den faktiske banearrayen til RealPath () -funksjonen for å få hele banen til “/SRC/noen FILE.txt ”til" faktiske bane "-arrayen. Det returnerte resultatet lagres til "PTR" -pekervariabelen. Innenfor "if" -delen, hvis "PTR" returnerer resultatet av realpath () -funksjonen som inneholder noe referansenummer, viser Printf -setningen den faktiske banen via den faktiske banen -matrisen. Ellers utføres den andre delen av denne koden og genererer en feil via bruk av strerrorfunksjonen ved bruk av "Errno" -variabelen som et argument. Utgangsfunksjonen er å avslutte dette programmet.


Vi kompilerte denne C -koden med GCC -kompilatoren og opprettet sin “RealPath1.ut ”objektfil foran av -o -alternativet.


Etter å ha kjørt objektfilen sin med “./”Karakter, vi fikk feilen fordi vi ikke har gitt riktig format på filstien“/SRC/noen File.tekst".


La oss oppdatere koden igjen for å unngå denne feilen kort tid etter å ha utført objektfilen. Vi oppdaterer den første linjen innen hovedfunksjonen,. Karaktertypen Pointer “Link Path” som inneholder den spesifikke filen med en mappe nedenfor i den er oppdatert. Nå legger vi til navnet på en “noen file.txt ”-filen som ligger i den nåværende arbeidskatalogen“ SRC ”i stedet for“/SRC/noen FILE.txt ”bane til arbeidskatalogmappen. Resten av koden brukes uten noen endring. Lagre og kjør denne koden for å se resultatene.


Etter å ha sammenstilt denne C -filen med GCC -kompilatoren og opprettet sin “RealPath1.ut ”objektfil med -o -objektet, den er klar til å bli utført.


Etter utførelsen av C -objektfilen, den virkelige og fulle banen til den spesifikke filen “Somefile.txt ”vises på terminalskjermen.

Konklusjon

Denne artikkelen handler om bruken av RealPath -metoden til POSIX C -biblioteket for å vise den virkelige og fulle banen til en spesifikk fil. For dette prøvde vi de to C -eksemplene i Kali Linux -plattformen. Innenfor eksemplene våre så vi på hvordan denne funksjonen reagerer på et enkelt filnavn eller med en bestemt bane.