GetCwd -funksjon på C -språk

GetCwd -funksjon på C -språk

Å sette opp en fungerende katalog fra Linux Root Directory åpner for muligheten for å få tilgang til og jobbe med hele filstrukturen i de forskjellige system- og brukermappene.

C -språket gir CHDIR () -funksjonen for å sette opp en fungerende katalog og har også en funksjon for å spørre katalogen du jobber i.

I denne Linux -hint -artikkelen lærer du hvordan du bruker GetCWD () -funksjonen for å spørre katalogen du jobber for øyeblikket. Vi vil forklare den teoretiske virkningen av denne funksjonen, dens syntaks, typene av dens innspill og utgangsargumenter, og hver type data.

For å bruke denne funksjonen på en praktisk måte, vil vi bruke alt vi lærte gjennom et praktisk eksempel der du lærer trinn for trinn om hvordan du bruker denne funksjonen til å hente den gjeldende arbeidskatalogen.

Syntaks av getCwd () -funksjonen på C -språk

char *getcwd (char *buf, størrelse_t størrelse);

Beskrivelse av getCwd () -funksjonen på C -språk

GetCWD () -funksjonen stiller spørsmål om den gjeldende arbeidskatalogen for anropsprogrammet eller prosessen. Denne funksjonen returnerer pekeren til en "buf of størrelse" -karakterist som inneholder en streng med den absolutte banen til den nåværende arbeidskatalogen.

Hvis samtalen til GetCWD () -funksjonen er vellykket, returnerer den pekeren til strengen med banen til arbeidskatalogen. Hvis det oppstår en feil, er resultatet en nullpeker. I dette tilfellet lagres feilidentifikasjonskoden automatisk i Errno Global Variable.

Både erklæringen om Errno -variabelen og definisjonene av feilkodene er i “Errno.h ”header. I det følgende eksempel vil vi se en spesiell seksjon som forklarer hvordan du kan oppdage og identifisere feilene.

GetCwd () -funksjonen er definert i “Unistd.h ”header. For å bruke den, må vi inkludere det i ".c ”-fil som følger:

#inkludere

Hvordan spørre den gjeldende arbeidskatalogen med GetCWD () -funksjonen på C -språket

I dette eksemplet vil vi forklare hvordan du kan hente den gjeldende arbeidskatalogen og vise den i kommandokonsollen.

Det første trinnet for å gjøre dette er å inkludere de nødvendige overskriftene. I dette tilfellet er de “Unistd.H ”og“ Stdio.H ”-filer. Deretter åpner vi en hovedfunksjon () som returnerer en tom returverdi og hvor vi erklærer en matrisebane med 128 elementer av typen røye. I denne matrisen lagrer GetCWD () -funksjonen strengen med katalogen.

Når de nødvendige variablene er erklært, kaller vi GetCWD () -funksjonen. Vi passerer "BUF" inngangsargumentet som pekeren til matrisen og størrelsen på bufferen som argumentstørrelse, som 128 i dette tilfellet.

Deretter, ved hjelp av printf () -funksjonen, skriver vi ut "den faktiske katalogen er:" -meldingen etterfulgt av katalogstien som returneres av getCwd () -funksjonen. Her er den komplette koden for dette eksemplet:

#inkludere
#inkludere
tomrom ()

Char Path [128];
getCwd (sti, 128);
printf ("\ n \ n den faktiske katalogen er: %s \ n", bane);

Deretter ser vi et bilde med sammenstilling og utførelse av denne koden. I dette tilfellet returnerer GetCwd () den absolutte banen til brukerens hjemmekatalog i økt:

Den samme pekeren som GetCwd () kommer tilbake i "BUF" -argumentet returnerer følgende resultat:

peker til buff = getCwd (peker til buff, størrelse);

Dette gjør at GetCWD () -funksjonen kan kalles fra inngangsargumentene til en annen funksjon. Følgende kode viser samtalen fra inngangsargumentene til printf ():

#inkludere
#inkludere
tomrom ()

Char Path [128];
printf ("\ n \ n the faktiske katalog er: %s \ n", getcwd (sti, 128));

I dette tilfellet tar printf () pekeren til strengen som returneres av getCwd () og skriver den ut til kommandokonsollen med bare en kodeinje.

Følgende bilde viser at denne metoden har samme effekt som programmet i forrige eksempel:

Feil når du bruker GetCWD () -funksjonen: Hvordan oppdage og identifisere dem

Hvis det oppstår en feil når du ringer GetCWD () -funksjonen, returnerer den en nullpeker som et resultat. Den enkleste måten å oppdage en feil er å bruke en "if" -tilstand der inngangstilstanden bestemmes av et resultat som er lik null. Følgende er et kodebit som bruker denne metoden for feildeteksjon:

if (getCwd (sti, 128) == null)

printf ("Det oppstod en feil i Function Call for GetCWD ().\ n ");

Når det oppstår en feil, lagres en numerisk kode som identifiserer at den automatisk lagres i errno global variabel som er deklarert i “Errno.h ”header.

Denne overskriften definerer også feilkodene og deres numeriske representasjon.

Du kan se feilene som GetCWD () -funksjonen kan generere, deres numeriske representasjon som returneres i errno -variabelen, og en kort beskrivelse av hver enkelt:

Definisjon Verdi i errno Beskrivelse
Enoent 2 Ingen slik fil eller katalog.
Eacces 1. 3 Tillatelse avslått
Efault 14 Dårlig adresse.
Einval 22 Ugyldig argument.
Emalje 36 Filnavn eller sti for lenge.

Den enkleste måten å identifisere en feil er å åpne en betinget bryter der hopptilstanden er errno global variabel, og hvert tilfelle er en feildefinisjon. Vi ser koden for denne deteksjonsmetoden i det følgende:

if (getCwd (sti, 128) == null)

bryter (errno)
sak einval:
printf ("Ugyldig argument.\ n ");
gå i stykker;
sak efault:
printf ("Dårlig adresse.\ n ");
gå i stykker;
sak Enoent:
printf ("Ingen slik fil eller katalog.\ n ");
gå i stykker;

Variablene og feilkodene er definert i “Errno.h ”header. For å bruke dem, må vi inkludere dem i ".c ”-fil som følger:

#inkludere

Konklusjon

I denne Linux -hint -artikkelen forklarte vi hvordan du bruker GetCWD () -funksjonen for å bestemme den gjeldende arbeidskatalogen for anropsprogrammet.

Vi så på et teoretisk avsnitt om denne funksjonen, hva dens innspill og utgangsargumenter er, og hva slags data den bruker. Deretter brukte vi det vi lærte gjennom de praktiske eksemplene med bilder og kodebiter som viser hvordan du erklærer de nødvendige variablene og kaller getCwd () -funksjonen.

Vi inkluderte også en spesiell seksjon der vi viser de forskjellige feilene som denne funksjonen kan generere og forklarte hvordan vi kan oppdage dem.